2016-08-03 18 views
0

私のアプリケーションをJBoss 7.1.1にアップグレードしており、RestEasyを使用しています。 RestEasyを動作させる際に問題が発生しています。 HTTPステータス404 - 相対的なリソースを見つけることができませんでした。私はこれが正しい終点を見つけることができないと信じています。私の疑問は、サービスをスキャンして登録する際に問題があることです。私は間違っている可能性があります。注:私はここではMavenのJBoss 7 RestEasy ...サービスが登録されていませんか?

を使用していないのRESTEasyに関係している私のweb.xmlの一部されています

<context-param> 
    <param-name>resteasy.servlet.mapping.prefix</param-name> 
    <param-value>/rest</param-value> 
</context-param> 

<listener> 
    <listener-class> 
     org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap 
    </listener-class> 
</listener> 


<servlet> 
    <servlet-name>Resteasy</servlet-name> 
    <servlet-class> 
     org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher 
    </servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Resteasy</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

ここでは、私が使用していますサンプル・リソースである:

import javax.ws.rs.POST; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 

@Path("/hello") 
public class HelloResource { 

@POST 
@Produces("text/plain") 
public String helloResource() { 
    return "Hello!"; 
} 
} 

私が試したURLは:http://localhost:8080/[project-name]/rest/hello

私はそれが私の呼び出しのために使用していると思います。私の質問に答えるために追加情報が必要な場合は、お気軽にお問い合わせください。あなたの助けを前もってありがとう!

P.S. - ファイルをWARでどのように構造化する必要がありますか?

[更新のweb.xml]

<context-param> 
    <param-name>resteasy.servlet.mapping.prefix</param-name> 
    <param-value>/rest</param-value> 
</context-param> 

    <context-param> 
    <param-name>resteasy.resources</param-name> 
    <param-value>com.elderscan.test.RestEasyExample</param-value> 
</context-param> 

<servlet> 
    <servlet-name>resteasy-servlet</servlet-name> 
    <servlet-class> 
     org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher 
    </servlet-class> 
    <init-param> 
     <param-name>javax.ws.rs.Application</param-name> 
     <param-value>com.elderscan.test.MyApplication</param-value> 
    </init-param> 
</servlet> 


<servlet-mapping> 
    <servlet-name>resteasy-servlet</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

だからこれは私が成功しRestEasyExampleへの呼び出しを行うことができますが、私は明らかに行う必要があり、別の他のRESTサービスに電話をかけることはできません。さらに、xmlに私のすべてのサービスを追加するというこの解決策は理想的ではないので、別の方法が望ましいでしょう。

答えて

1

にこれを追加してみてください...あなたの疑惑についての権利だと思います。

public class MyApplication extends Application { 
private Set<Object> singletons = new HashSet<Object>(); 

public MyApplication() { 
    singletons.add(new RestEasyExample()); 
    singletons.add(new RestEasyExample2()); 
} 

@Override 
public Set<Class<?>> getClasses() { 
    // TODO Auto-generated method stub 
    return null; 
} 
@Override 
public Set<Object> getSingletons() { 
    return singletons; 
} 
} 
0

私はあなたがこれを解決することになったあなたのweb.xml

<context-param> 
    <param-name>resteasy.scan</param-name> 
    <param-value>true</param-value> 
</context-param> 
+0

私はweb.xmlにいくつかの変更を行ったとして、私の最初の投稿にいくつかの更新を追加するつもりですが、:キーは各シングルトンは、RESTサービスであり、私はすでに持っていたものにこれを含めるようにしました以前はあなたがそこに用意したスニペットを持っていたので、resteasy.scanが無視されているという警告文が出ました(私はJBoss 7でデフォルト設定されていると思います)。その後、展開に失敗します。 [後で追加しました] - 新しいWeb.xmlでこれを試してみると、うまく展開できますが、httpステータスが500になり、java.lang.RuntimeExceptionエラーが発生します:クラスのpublicコンストラクタを見つけることができませんorg.jboss.resteasy.core.AsynchronousDispatcheは、デプロイメントが失敗するのに使用されたものです。 –

関連する問題