2017-05-17 14 views
0

EclipseのMaven/Tomcat/Javaを使いこなしています。私はこのjavaサーブレットを作成しましたが、localhost:xxxx/myapp/restに移動すると、私のGET要求に対する応答が得られません。私は404を取得します。 URLへのGET要求が動作していません。 誰が問題を知っていますか?ありがとうございました!Tomcat Java Servletのパス

@Path("/rest") 
public class WorldResource { 
    @GET 
    @Produces("application/json") 
    public String getOrders() { 
     WorldService service = ServiceProvider.getWorldService(); 
     JsonArrayBuilder jab = Json.createArrayBuilder(); 
     for (Country o : service.getAllCountries()) { 
      JsonObjectBuilder job = Json.createObjectBuilder(); 
      job.add("iso2Code", o.getCode()); 
      job.add("iso3Code", o.getIso3Code()); 
      job.add("capital", o.getCapital()); 
      job.add("continent", o.getContinent()); 
      job.add("region", o.getRegion()); 
      job.add("surface", o.getSurface()); 
      job.add("population", o.getPopulation()); 
      job.add("government", o.getGovernment()); 
      job.add("latitude", o.getLatitude()); 
      job.add("longitude", o.getLongitude()); 
      jab.add(job); 
     } 
     JsonArray array = jab.build(); 
     System.out.println(array); 
     return array.toString(); 

    } 
} 
+0

動作しないと言ったら、どういう意味ですか?あなたは200 OKですが、応答はありません、サーバーで要求が失敗しているか、要求はサーバーによって受信されていませんか? – manu

+0

404エラーが発生します。 @manu –

答えて

2

を試してみてください、それはJAX-RSリソースです。これはTomcatの中で「すぐに使える」ものではないので、JerseyのようにJAX-RS実装を展開する必要があります。

Aサーブレットは、次のようになります

@WebServlet(name = "WorldServlet", urlPatterns = {"/rest"}) 
public class WorldServlet extends HttpServlet { 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     response.setContentType("application/json"); 
     try (PrintWriter out = response.getWriter()) { 
      ... // your code 
      out.println(array.toString()); 
     } 
    } 
} 

それで、あなたは本当にただJAX-RSプロバイダーをインストールするに調べる必要があります。また、あなたがそうすると、確率は高くなりますが、JAX-RSの実装は通常、いくつかのパスに根ざしているので、/restにはまだありません。したがって、/resources/restのようなものになる可能性があります。

これはもちろん設定可能です。

-1

これは、サーブレットがPOJOを適切なHTTP応答に変換できないために発生します。

代わりのreturn array.toString();
これは、サーブレットではありませんreturn Response.status(200).entity(array.toString()).build();

+0

メソッドステータス(200)は、タイプResponseに対しては未定義です。 –

+0

** ** POJOとは何ですか?このメソッドは、JSONを含む 'String'を返しています。 – EJP

+0

javax.ws.rs.core.Responseを使用していることを確認してください @SomeNameこのブログを参照してくださいhttps://www.mkyong.com/webservices/jax-rs/jax-rs-path-uri-matching-example/ – manu

関連する問題