2016-10-10 4 views
1

ジャージーとTomcat8を使用してwsを開発していますが、問題は@pathが処理されていないため、結果のURLが正しく機能していないことです。RESTfulジャージー404が見つかりません

パッケージとクラスの説明:

JAXBのためのXML注釈付きのJavaクラスを含ん eu.datexとeu.datex2パッケージ。

トランスフォーマクラスはxmlデータをjavaに変換します。このjavaクラスは処理され、新しい日付x2オブジェクトに保存され、XMLで応答するために返されます。 localhostは動作しません

URL:8090/org.CTAG.DATEX2REST /休憩/ DATEXここ

私はあなたに私のMVNのプロジェクト構造といくつかの重要なファイルを示しています。

MVN構造:

enter image description here

これはResourceConfigのクラスです:

package com.CTAG.application; 
import javax.ws.rs.ApplicationPath; 
import org.glassfish.jersey.server.ResourceConfig; 


@ApplicationPath("/rest") 
public class MyApplication extends ResourceConfig { 

    public MyApplication() { 
     packages("com.CTAG.rest;"); 
    } 

} 

のweb.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> 
    <display-name>org.CTAG.DATEX2REST</display-name> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 

    <display-name>CTAG DATEX2</display-name> 

    <listener> 
     <listener-class> 
      com.CTAG.application.Init 
     </listener-class> 
    </listener> 
</web-app> 

このクラスは、JAXBとJavaクラスに(サーバーGETから)XMLデータからの変換を初期化します

public class Init implements ServletContextListener { 

    @Override 
    public void contextDestroyed(ServletContextEvent arg0) { 
     System.out.println("ServletContextListener destroyed"); 
    } 
    @Override 
    public void contextInitialized(ServletContextEvent arg0) { 
     System.out.println("----INITIALIZED----"); 
     try { 
      Map<SituationRecord, Integer> map = new HashMap<>(); 

       URL url = new URL(" http://infocar.dgt.es/datex2/dgt/SituationPublication/all/content.xml"); 
       Map<SituationRecord, Integer> copia = map; 
       map = Traslator.traslator(copia, url); 
       System.out.println("----DATEX now available----"); 

       // Preubassleep(30000); 

     } catch (TransformerConfigurationException | JAXBException | ParserConfigurationException | IOException e) { 

      e.printStackTrace(); 
     } 
    } 
} 

リソースクラス(DataExchangeの)、これはXMLに変換されますJavaクラスを返さなければなりません:

package com.CTAG.rest; 


@Path("/datex") 
@Produces(MediaType.APPLICATION_XML) 
public class DataExchange { 

    private D2LogicalModel datex2 = Traslator.d2; 

    @GET 
    @Produces(MediaType.APPLICATION_XML) 
    public Response getDatex() { 

     return Response.ok(this.datex2).build(); 
    } 

    @GET 
    @Path("/{road}") 
    public Response getDatexByRoad(@PathParam("road") String roadName){ 

     SituationPublication payLoad = (SituationPublication)this.datex2.getPayloadPublication(); 
     FilterByRoad filter = new FilterByRoad(payLoad.getSituation()); 
     List<Situation> filteredList = new LinkedList<>(); 
     filteredList.addAll(filter.filterByRoad(roadName)); 
     payLoad.setSituation(filteredList); 
     this.datex2.setPayloadPublication(payLoad); 

     return Response.ok(this.datex2).build(); 
    } 
+1

あなたの最終戦争名は何ですか? – kuhajeyan

+0

'org.CTAG.DATEX2REST'部分とは何ですか? – ujulu

答えて

0

交換

{

packages("com.CTAG.rest;"); 

}

{

packages("com.CTAG.rest"); 

}

これが働くだろう。

+0

こんにちは、間違いを修正していただきありがとうございますが、まだ動作していません。 – Datex2

0

これはpackages()の代わりにregister()を使用して解決しましたが、理由を理解できません。ありがとうございます。

関連する問題