私はシンプルなJAX-WSアプリケーションを開発しています。私は石鹸の上にそのaddClient(クライアントクライアント)メソッドを呼んでいるときJAX-WSで@InjectがNullPointerExceptionを発生する
は、私のWebサービスエンドポイントの一つは、NPEを上げる注射したオブジェクト
@WebService(
endpointInterface = "com.kravchenko.service.ClientService",
targetNamespace = "http://com.kravchenko/wsdl"
)
@Named("clientServiceImpl")
public class ClientServiceImpl implements ClientService {
@Inject
ClientDAO clientDAO;
public void addClient(Client client) {
if (clientDAO == null) {
System.out.println("NULL CLIENTDAO");
}
clientDAO.addClient(client);
}
}
を持っています。
私のDAOも非常に簡単で、私はセッター注入するための注入型にしようとした
@Singleton
public class ClientDAO {
public Map<Long,Client> clients= new ConcurrentHashMap<Long, Client>();;
public void addClient(Client client) {
clients.put(client.getId(),client);
}
}
のように見えますが、それはあまりにも、動作しませんでした。 @Singletonを削除したり、@ManagedBeanや@Statefulのような他のアノテーションを使用しようとしましたが、NPEはまだ残っています。 2つのエンドポイントを持つsun-jaxws.xmlがあります。 私は私のプロジェクトでbeans.xmlのを持っている:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
bean-discovery-mode="all">
</beans>
すべてのDAOのメソッドは、しかし仕事私はCliendDAO dao = new ClientDAO();
としてそれを宣言した場合でも、それは私が私のコードを形成することにしたい方法ではありません。どのように私は、この問題を解決することができますしてください任意のアイデアを
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
:
私のpom.xmlはわずか2依存関係を持っていますか?
使用 JAXWS-RT 2.1.3 のjavax 7.0 –
は、[このSOポスト](HTTPを見てみたJavaEE-API:// stackoverflowの.com/questions/5661022/inject-ed-attribute-remaining-null?rq = 1)。このユーザーにも同じ問題があったようです。多分あなたを助けるでしょう。 ** EDIT:**あなたの 'clientDAO.addClient(client);'を 'else'ブロックに入れてみましょう。それ以外の場合は、 'clientDAO == null'でもコードが実行されます。 – QBrute
Stacktraceも投稿できますか? –