5

AtmosphereとJerseyを一緒に使用して、ユーザーにメッセージをブロードキャストできるようにしています。ただし、Jerseyエンドポイントへの要求に応じて、以下がログに表示され、ServletExceptionが発生します。

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>

私は何が欠けていますか?ありがとう!

4

2 に答える 2

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>

Jersey メーリングリストの Paul Sandoz と Atmosphere メーリングリストの Jeanfrancois に感謝します。

于 2010-12-07T15:47:57.070 に答える
0

web.xml で Web アプリケーション記述子のバージョンをダウングレードすると、ネイティブ (Jersey) スキャンを無効にするのに役立つことが報告されています: 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>
于 2016-06-28T12:02:55.563 に答える