私はコンテナアイテムパターンを使用しています。
ユーザーを格納するコンテナ:
@Path("/user")
@Stateless
public class UsersResource {
@Context
private UriInfo context;
@EJB
private UserBeanLocal userBean;
public UsersResource() {
}
@GET
@Produces("application/json")
public String getJson(@HeaderParam("authorization") String authorization) {
return userBean.sampleJSON();
}
@Path("{id}")
public UserResource getUserResource(@PathParam("id") String id) {
return UserResource.getInstance(id);
}
}
1 人のユーザーを表すアイテム:
@Stateless
public class UserResource {
@EJB
private UserBeanLocal userBean;
private String id;
public UserResource() {
}
private UserResource(String id) {
this.id = id;
}
public static UserResource getInstance(String id) {
return new UserResource(id);
}
@GET
@Produces("application/json")
public String getJson() {
//TODO return proper representation object
return userBean.sampleJSON();
}
}
そして豆。メソッドは 1 つだけです。
@Local
public interface UserBeanLocal {
String sampleJSON();
}
@Stateless
public class UserBean implements UserBeanLocal {
@Override
public String sampleJSON() {
return "{\"Name\": \"Jan\", \"Lastname\": \"Węglarz\", \"PESEL\": \"47092412341\"}";
}
}
コンテナ内の EJB は正常に動作しますが、アイテム内では null を返します。なんで?
getJson() で id などの何かを返そうとしましたが、問題はありませんでした。すべてがうまくいきました。しかし、EJB を使用して何かを返すと、null 例外が発生します。
アプリは問題なく jboss 7 にデプロイされます。