2010-12-01 14 views
5

私は、ユーザーにメッセージをブロードキャストできるように、Jerseyと共にAtmosphereを試しています。ただし、Jerseyエンドポイントへのリクエストでは、ログに次のようなメッセージが表示され、ServletExceptionが発生します。スタックトレースのAtmosphere and Jerseyとの依存関係がありません

SEVERE: The following errors and warnings have been detected with resource and/or provider classes: 
    SEVERE: Missing dependency for method public void org.apache.cxf.jaxrs.provider.JSONProvider.setMessageContext(org.apache.cxf.jaxrs.ext.MessageContext) at parameter at index 7 
    SEVERE: Missing dependency for field: private org.apache.cxf.jaxrs.ext.MessageContext org.apache.cxf.jaxrs.provider.RequestDispatcherProvider.mc 
    SEVERE: Missing dependency for method public void org.apache.cxf.jaxrs.provider.JAXBElementProvider.setMessageContext(org.apache.cxf.jaxrs.ext.MessageContext) at parameter at index 1 
    SEVERE: Missing dependency for field: private org.apache.cxf.jaxrs.ext.MessageContext org.apache.cxf.jaxrs.provider.MultipartProvider.mc 
    SEVERE: Missing dependency for method public void org.apache.cxf.jaxrs.provider.JAXBElementProvider.setMessageContext(org.apache.cxf.jaxrs.ext.MessageContext) at parameter at index 13 
    SEVERE: Missing dependency for field: private org.apache.cxf.jaxrs.ext.MessageContext org.apache.cxf.jaxrs.provider.FormEncodingProvider.mc 

パート:

SEVERE: Allocate exception for servlet AtmosphereServlet 
javax.servlet.ServletException 
    at org.atmosphere.cpr.AtmosphereServlet.init(AtmosphereServlet.java:540) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173) 
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809) 

私はMavenを使用していますし、次の依存関係追加しました:

<dependency> 
    <groupId>org.atmosphere</groupId> 
    <artifactId>atmosphere-jersey</artifactId> 
    <version>0.6.3</version> 
</dependency> 

は、私が何をしないのですか?ありがとう!

答えて

6

明らかに、JAX-RSの2つの実装がアプリケーションに何らかの形で存在していたという問題がありました。これは、JerseyにRestクラスを含むパッケージのみをスキャンさせることによって解決することができるため、他のJAX-RS実装を認識できません。

<servlet> 
    <description>AtmosphereServlet</description> 
    <servlet-name>AtmosphereServlet</servlet-name> 
    <servlet-class>org.atmosphere.cpr.AtmosphereServlet</servlet-class> 
    ... 
    <init-param> 
    <param-name>com.sun.jersey.config.property.packages</ param-name> 
    <param-value>mypackage.with.the.rest.classes</param-value> 
    </init-param> 
</servlet> 

ジャージーメーリングリストのPaul Sandozと大気圏のJeanfrancoisメーリングリストに感謝します。

+0

おかげで、それは私の場合は完全に働きました"SEVERE:メソッドの依存関係がありません。public void org.apache.cxf.jaxrs.provider.RequestDispatcherProvider.setMessageContext(org.apache.cxf.jaxrs.ext.MessageContext)atパラメータ14のインデックスにあります。" mypackage.with.the.restを変更しました。私のRESTが定義されていて、すべてが機能していたパッケージの.classes。どうもありがとう。 – tremendows

0

これは、web.xml内のWebアプリ記述子のバージョンをダウングレードすると、ネイティブを無効(ジャージー)スキャンを助けることができることが報告された:Apache Tomcatは私に言ったがhttp://cxf.apache.org/docs/jax-rs-deployment.html#JAX-RSDeployment-WebLogic

<!-- From: --> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd"> 
</web-app> 
<!-- To: --> 
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
</web-app> 
関連する問題