JAX-RSでレストサービスアプリケーションを作成しています。それは学校のためのいくつかのプロジェクトのためです。このプロジェクトのために私は技術に従う使用する必要があります。 •Mavenを •JAX-RS •CDI •JPA - EJB •JNDI •ビーン検証だから今、私はすでにフェイクで自分のドメイン "カフェ" をmadedCDIを使用している場合、レストサービスは動作しません。サービスはnullのままです
DB(「CafeStub」)とJPA(「CafeDB」)を使用した実際のDBとの間に存在する。私のドメインではCDIを少し使います。 (CafeServiceクラスの@Inject ...)
私はJAX-RSを使用して休憩サービスを作成したかったのです。これがうまく働いた:
を私は再びCDIを使用しようとすると私の問題は、それが失敗していると、それは重度の500例外、NullPointerExceptionが、「与える:RuntimeExceptionは、HTTPに再投げ、応答にマッピングすることができませんでしたコンテナ」 のフルスタックトレース:
私は長い時間を検索すでに、この問題を解決する方法がわからない...うまくいけば、誰かが私を助けることができます。■
これが私です 『CafeController』クラス。
Path("/cafes")
public class CafeController {
@Inject
private CafeFacade cafeFacade;
public CafeController() {
//this.cafeFacade = new CafeService();
}
@GET
@Produces("application/json")
public Response getCafes(){
try{
// test ........
ObjectMapper mapper = new ObjectMapper();
Cafe cafe = cafeFacade.getCafe(new Long(1));
String jsonInString = mapper.writeValueAsString(cafe);
return Response.status(200).entity(jsonInString).build();
}catch (JsonProcessingException jsonEx) {
System.out.println("Json Exception");
System.out.println(jsonEx.getMessage());
return null;
}
}
この1つは、「CafeService」クラスであるRESTサービス、「CafeFacade」彼女はあなたが「CafeStub」クラスを参照してください
public class CafeService implements CafeFacade {
@Inject
private CafeRepository cafeRepository;
public CafeService() {
//cafeRepository = new CafeStub();
//cafeRepository = new CafeDB("CafesPU");
}
@Override
public long addCafe(Cafe cafe) {
return this.cafeRepository.addCafe(cafe);
}
@Override
public Cafe getCafe(long cafeID) {
return this.cafeRepository.getCafe(cafeID);
}
、「CafeRepository」を実装1を実装1を生成します
public class CafeStub implements CafeRepository {
private static Map<Long, Cafe> cafes;
private static long counter = 0;
public CafeStub() {
cafes = new HashMap<Long, Cafe>();
// adding some dara
this.addSomeData();
}
@Override
public long addCafe(Cafe cafe) {
if(cafe == null){
throw new DBException("No cafe given");
}
counter++;
cafe.setCafeID(counter);
cafes.put(cafe.getCafeID(), cafe);
return cafe.getCafeID();
}
@Override
public Cafe getCafe(long cafeID) {
if(cafeID < 0){
throw new DBException("No correct cafeID given");
}
if(!cafes.containsKey(cafeID)){
throw new DBException("No cafe was found");
}
return cafes.get(cafeID);
}
少なくとも、ここにあなたが私のpom.xmlを見ることができます(CafeServiceプロジェクトから依存関係) - (CafeServiceプロジェクトから)web.xmlおよびプロジェクトの構造...
事前に<dependencies>
<dependency>
<groupId>Cafes</groupId>
<artifactId>Cafes</artifactId>
<version>0.0.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.3</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-bundle</artifactId>
<version>1.19.4</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.19.4</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.19.4</version>
</dependency>
</dependencies>
おかげで... 乾杯解決 トム