2017-07-31 6 views
0

Javaでリソースルートを指定するのが初めてで、ルートを指定する際に問題があります。今のところ私は単純にApplicationを拡張する1つのクラスと、入力に反応する1つのクラスを持っています。これらのクラスのルーティング要件は何ですか?私の下のコードは動作しませんし、私は理由を把握しようとしています。私はこれらのソースを見つけることを試みたが、多くの運がなかった。@Path注釈要件?

  1. ApplicationPathには/を使用できますか?このクラスはすべて経路を見つけるためにextend Applicationです。

例:

package com.sentiment360.helloworld; 

import javax.ws.rs.ApplicationPath; 
import javax.ws.rs.core.Application; 

/** 
* JAXActivator is an arbitrary name, what is important is that javax.ws.rs.core.Application is extended 
* and the @ApplicationPath annotation is used with a "rest" path. Without this the rest routes linked to 
* from index.html would not be found. 
*/ 
@ApplicationPath("/") 
public class JAXActivator extends Application { 
} 

各クラスが宣言した@Pathを持っている必要がない(あるいは、それらはすべて@Statelessすることができますか)?

@Path("/helloservice") 
public class HelloService { 

    private static Logger _logger; 

    public HelloService(){ 
     _logger = Logger.getLogger(HelloService.class.getName()); 
    } 

    private Connection conn() throws SQLException {...} 
} 
+0

ご質問ください。どのような問題がありますか? _ "ApplicationPathのために/を使用することはできますか?" - 私はそれは悪い考えです。あなたが '@Path'でクラスをたくさん持つことができ、このクラスへの(交差のない)ルートを持っていたいからです。あなたのクラスのための '@ Path'と、あなたがルーティングしたいクラスのメソッドの' @ Path'を持つ方が良いでしょう。 –

答えて

0

#1の短いバージョンはyesです。

しかし、動作は実装に依存します。詳しい説明はhttps://stackoverflow.com/a/16747253/1063501を参照してください。

#2の場合、通常、必要なすべてのエンドポイントに対して@Pathを指定する必要があります。 @Statelessであるという事実は、あなたがそれに対処する方法を必要とするので、無関係です。