2011-06-15 90 views
1

我正在使用JAX-RS example。 本示例包含兩個RESTful Web服務,一個帶有註釋,另一個不帶。CXF DOSGi忽略註釋

我使用maven構建它,並將其與CXF DOSGi單包分發一起部署到Felix中。沒有註釋的人可以很好地工作,但其他註解似乎完全被忽略。我在日誌中收到以下消息:

WARNING: No resource methods have been found for resource class org.apache.cxf.dosgi.samples.greeter.rest.GreeterService 
Jun 15, 2011 10:34:17 PM org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean checkResources 
SEVERE: No resource classes found 
Exception in thread "pool-1-thread-1" org.apache.cxf.service.factory.ServiceConstructionException 
     at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:122) 
     at org.apache.cxf.dosgi.dsw.handlers.JaxRSPojoConfigurationTypeHandler.createServer(JaxRSPojoConfigurationTypeHandler.java:135) 
     at org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore.exportService(RemoteServiceAdminCore.java:244) 
     at org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance$1.run(RemoteServiceAdminInstance.java:78) 
     at org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance$1.run(RemoteServiceAdminInstance.java:71) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance.exportService(RemoteServiceAdminInstance.java:71) 
     at org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance.exportService(RemoteServiceAdminInstance.java:40) 
     at org.apache.cxf.dosgi.topologymanager.TopologyManager$2.run(TopologyManager.java:254) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
     at java.lang.Thread.run(Unknown Source) 
Caused by: javax.ws.rs.WebApplicationException 
     at org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean.checkResources(AbstractJAXRSFactoryBean.java:238) 
     at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:85) 
     ... 11 more 

回答

3

問題是我的包中有org.apache.servicemix.specs.jsr311-api-1.1。當我刪除它時,處理了JAX-RS註釋。

UPD:關於這個問題,這裏是a thread on CXF mailing list

+1

大概你設法在類路徑上得到一個名字兩次,因爲(D)OSGi將不同的東西彼此分開。這確實會導致問題,因爲Java的類標識實際上並不是通過名稱_except_在單個類加載器中進行的...... – 2011-06-24 08:40:06

+0

是的,您可能是對的。感謝您的澄清。 – 2011-06-24 11:18:38