2016-01-13 7 views
8

動作しない私には、以下ののRestletパスparamが以下

public Restlet createInboundRoot(){ 
Router router = new Router(getContext()); 
router.attach("account/profile",UserProfile.class); 

をルーティングしている私は1つのリソースクラスを呼び出すとするために、同一の機能のカップルをしたいリソースクラスUserProfile.java

@post 
@path("add") 
public void addUser(User user){ 

@post 
@path("modify") 
public void modifyUser(User user){ 

@post 
public void test(){//only this is called 

ですリソースクラス。つまり、私の上記のリソースクラスは、追加、変更などのUserProfilesに関連する関数を処理します。 URLは以下のとおりです。
アカウント/プロファイルの追加/ =>ユーザー
アカウント/プロファイルを追加/変更=>私の実装はのみとテスト機能しない上に、

とにかくユーザーを変更するには()メソッドアカウント/プロフィール/

私はPathparamsでも試してみました。しかし、それもうまくいきませんでした。パスのparamsの場合 :

router.attach("account/profile/{action}",UserProfile.class); 

は私の問題がどこにあるか誰もが私に教え

@post 
@path("{action}") 
public void addUser(@pathparam("action") String action, User user){ 

、追加され、リソースクラスでました。

+0

あなたがここにあなたのERRログを投稿することができますか? –

+0

注目のkarthiに感謝します。スローされたエラーはありません..サーバーは応答として012を返します –

+0

まあ!これは、アクセスしようとしているリソースが存在するが、サーバーが適切な応答を出すことができないことを意味します。これらのことを試すことができます。ディレクトリにすべてのアクセス権があることを確認し、@ Producesアノテーションを使用してjsonまたはXMLのいずれかのプロダクションタイプを指定し、@putメソッドまたは@getメソッドでtryを与えます。時には投稿が犯人です。 –

答えて

0

サーバーリソースを接続する方法はちょっと変です。私は、RestletのネイティブルーティングとJAXRS拡張からのルーティングを混在させたと思います。

私はあなたのユースケースに関するいくつかのテストを行いました。あなたが期待する動作をすることができました。 Restletのバージョン2.3.5を使用しました。ここで

は私がやったことです:

  • あなたがJAXRSを使用したいので、あなたがJaxRsApplicationを作成し、コンポーネントにそれを添付する必要があります。

    Component component = new Component(); 
    component.getServers().add(Protocol.HTTP, 8182); 
    
        // JAXRS application 
        JaxRsApplication application 
         = new JaxRsApplication(component.getContext()); 
        application.add(new MyApplication()); 
    
        // Attachment 
        component.getDefaultHost().attachDefault(application); 
    
        // Start 
        component.start(); 
    
  • アプリケーションは単にリスト使用するサーバーリソースは、ルーティングとパスを定義しません。

    import javax.ws.rs.core.Application; 
    
    public class MyApplication extends Application { 
        public Set<Class<?>> getClasses() { 
         Set<Class<?>> rrcs = new HashSet<Class<?>>(); 
         rrcs.add(AccountProfileServerResource.class); 
         return rrcs; 
        } 
    } 
    
  • サーバリソースを取り扱う方法および関連経路を定義:

    • http://localhost:8182/account/profile/modifymodifyUser方法は
    • http://localhost:8182/account/profile/addと呼ばれ、私は異なる経路を呼び出すと、右メソッドが呼び出される

      import javax.ws.rs.POST; 
      import javax.ws.rs.Path; 
      
      @Path("account/profile/") 
      public class AccountProfileServerResource { 
          @POST 
          @Path("add") 
          public User addUser(User user) { 
           System.out.println(">> addUser"); 
           return user; 
          } 
      
          @POST 
          @Path("modify") 
          public User modifyUser(User user) { 
           System.out.println(">> modifyUser"); 
           return user; 
          } 
      
          @POST 
          public void test() { 
           System.out.println(">> test"); 
          } 
      } 
      
    • addUserメソッドは

    • http://localhost:8182/account/profile/と呼ばれます。testメソッドはcaです。 ティエリー、

はそれがあなたのお役に立てば幸いですlled