2016-04-26 5 views
0

Я бегу в исключении, показанном ниже. Я попытался опубликовать webservie, используя аннотацию с dosgi. Но похоже, что аннотации будут проигнорированы.dosgi: для класса ресурсов не найдены методы ресурсов - игнорируется аннотация javax.ws.rs?

Когда я использовать restProps.put ("service.exported.configs", "org.apache.cxf WS.");

в моем классе Activator.java без аннотаций javax.ws.rs, он отлично работает, и я могу запросить wsdl (localhost: 9090/provalet? Wsdl).

Вот некоторые темы, но не из этих ответов помогли мне:

"No resource methods" when using JAX-RS on TomEE+ -> в считается "общественность" сфера

CXF DOSGi is ignoring annotations http://cxf.547215.n5.nabble.com/CXF-DOSGi-is-ignoring-JAX-RS-annotations-td4495048.html -> у меня нет сверток под названием «орг .apache.servicemix.specs.jsr311-апи-1,1"

я также разработал этот пример http://maksim.sorokin.dk/it/2011/09/18/maven-apache-felix-cxf-dosgi-an-example-of-dosgi-service/ -> но это же исключение

Я работаю с

  • пункт Список
  • Apache Felix 5.4.0
  • Distributed OSGi распространения программного обеспечения с одним Bundle распределения (1.2.0)
  • JAVA 1.8

мой пулы:

START LEVEL 1 
    ID|State  |Level|Name 
    0|Active  | 0|System Bundle (5.4.0) 
    1|Active  | 1|backport-util-concurrent (3.1.0) 
    2|Active  | 1|ANTLR Runtime (3.1.3) 
    3|Active  | 1|Apache Commons Bean Utilities (1.8.0) 
    4|Active  | 1|Apache Commons Collections (3.2.1) 
    5|Active  | 1|Apache Commons Logging (1.1.1) 
    6|Active  | 1|Apache Log4J (1.2.15) 
    7|Active  | 1|SLF4J API (1.5.10) 
    8|Resolved | 1|SLF4J Log4J Binding (1.5.10) 
    9|Active  | 1|Distributed OSGi Distribution Software Single-Bundle Distribution (1.2.0) 
    10|Active  | 1|javax.ws.rs-api (2.0.1) 
    11|Active  | 1|jaxb-api (2.2.7) 
    12|Active  | 1|Sesame 2.1.1 onejar. (2.1.1) 
    13|Active  | 1|Apache Felix Gogo Command (0.8.0) 
    14|Active  | 1|Apache Felix Gogo Runtime (0.8.0) 
    15|Active  | 1|Apache Felix Gogo Shell (0.8.0) 
    16|Active  | 1|osgi.cmpn (4.2.0.200908310645) 
    17|Active  | 1|provalet (1.0.0.SNAPSHOT) 
    18|Active  | 1|Metro Web Services API OSGi Bundle (2.1.0.b16) 
    19|Active  | 1|Prova compact (3.2.1) 

Activator.java (OSGi Активатор в моем расслоении provalet (1.0.0.SNAPSHOT)):

public void start(BundleContext arg0) throws Exception { 
    Activator.arg0 = arg0; 
    System.out.println("Start Provalet..."); 

    Dictionary<String, String> restProps = new Hashtable<String, String>(); 
    restProps.put("service.exported.interfaces", "*"); 
    restProps.put("service.exported.configs", "org.apache.cxf.rs"); 
    restProps.put("service.exported.intents", "HTTP"); 
    restProps.put("org.apache.cxf.rs.address", "http://localhost:9090/provalet"); 

    arg0.registerService(ProvaletService.class.getName(), 
             new ProvaletServiceImpl(), restProps); 
} 

ProvaletService.java:

import javax.jws.WebParam; 
import javax.jws.WebService; 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

@WebService 
public interface ProvaletService { 
    public String greetMe(@WebParam(name = "greeterName") String greeterName); 
    public String getMetaData(); 
    public String startTestProva(); 

    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    @Path("/sayhelo") 
    public String sayHello(); 
} 

OSGI-INF/дистанционного обслуживания/дистанционное обслуживание .xml:

<service-descriptions xmlns="http://www.osgi.org/xmlns/sd/v1.0.0"> 
    <service-description> 
    <provide interface="de.fuBerlin.api.ProvaletService" /> 
    <property name="service.exported.interfaces">*</property> 
    <property name="service.exported.configs">org.apache.cxf.rs</property> 
    <property name="service.exported.intents">HTTP</property> 
    <property name="org.apache.cxf.rs.address">http://localhost:9090</property> 
    </service-description> 
</service-descriptions> 

Вот часть моего pom.xml Responsable для генерации пучка

<plugins> 
      <plugin> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>maven-bundle-plugin</artifactId> 
       <version>1.2.0</version> 
       <extensions>true</extensions> 
       <configuration> 
        <instructions> 
         <Export-Package> 
          de.fuBerlin.provalet, 
          de.fuBerlin.api 
         </Export-Package> 
         <Import-Package> 
          org.apache.cxf.dosgi.dsw.qos, 
          org.osgi.framework;version="1.5.0", 
          org.osgi.util.tracker;version="1.4.0", 
          ws.prova.api2;version="3.2.1", 
          ws.prova.exchange;version="3.2.1", 
          ws.prova.exchange.impl;version="3.2.1", 
          ws.prova.service;version="3.2.1", 
          javax.jws, 
          javax.ws.rs;version="[2.0,3)", 
          javax.ws.rs.core;version="[2.0,3)" 
         </Import-Package> 
         <Private-Package> 

         </Private-Package> 
         <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName> 
         <Bundle-Activator> 
          de.fuBerlin.provalet.Activator 
         </Bundle-Activator> 
        </instructions> 
       </configuration> 
      </plugin> 
     </plugins> 

Вот исключение:

application context:org.sprin[email protected]4796c889: display name [OsgiBundleXmlApplicationContext(bundle=cxf-dosgi-ri-singlebundle-distribution, config=classpath:/OSGI-INF/cxf/intents/intent-map.xml)]; startup date [Tue Apr 26 10:18:40 CEST 2016]; root of context hierarchy 
    retrieved intent map: IntentMap: {[email protected], [email protected], [email protected]d4, [email protected]1868d4, [email protected]a950ae, HTTP=PROVIDED} 
    Apr 26, 2016 10:18:40 AM org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore exportService 
    INFO: interfaces selected for export: [de.fuBerlin.api.ProvaletService] 
    Apr 26, 2016 10:18:40 AM org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore exportService 
    INFO: configuration types selected for export: [org.apache.cxf.rs] 
    Apr 26, 2016 10:18:40 AM org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore exportService 
    INFO: creating initial ExportDescription for interface de.fuBerlin.api.ProvaletService with configuration types [org.apache.cxf.rs] 
    Apr 26, 2016 10:18:40 AM org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore exportService 
    INFO: creating server for interface de.fuBerlin.api.ProvaletService 
    Apr 26, 2016 10:18:40 AM org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore exportService 
    INFO: found handler for de.fuBerlin.api.ProvaletService -> org.[email protected]4c6b2597 
    Apr 26, 2016 10:18:40 AM org.apache.cxf.dosgi.dsw.handlers.JaxRSPojoConfigurationTypeHandler createServer 
    INFO: Creating a de.fuBerlin.api.ProvaletService endpoint via JaxRSPojoConfigurationTypeHandler, address is http://localhost:9090/provalet 
    Apr 26, 2016 10:18:40 AM org.apache.cxf.jaxrs.utils.ResourceUtils checkMethodDispatcher 
    WARNING: No resource methods have been found for resource class de.fuBerlin.api.ProvaletService 
    Apr 26, 2016 10:18:40 AM org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean checkResources 
    SEVERE: No resource classes found 
    Exception in thread "pool-6-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.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
    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 

Предположение: Я даже думаю, что это проблема с зависимостями и это выглядит как javax.ws.rs аннотации будут игнорироваться. Возможно, я тоже ошибся с версиями пакета.

Кто-нибудь знает что-то еще об этой проблеме и как я могу это решить? Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

вид касается Ларса

ответ

2

хорошо ..

рабочий targetplatform выглядит как это .. это действительно проблема с зависимостями.

START LEVEL 1 
    ID|State  |Level|Name 
    0|Active  | 0|System Bundle (5.4.0) 
    1|Active  | 1|backport-util-concurrent (3.1.0) 
    2|Active  | 1|ANTLR Runtime (3.1.3) 
    3|Active  | 1|Apache Commons Bean Utilities (1.8.0) 
    4|Active  | 1|Apache Commons Collections (3.2.1) 
    5|Active  | 1|Apache Commons Logging (1.1.1) 
    6|Active  | 1|Apache Log4J (1.2.15) 
    7|Active  | 1|SLF4J API (1.5.10) 
    8|Resolved | 1|SLF4J Log4J Binding (1.5.10) 
    9|Active  | 1|Distributed OSGi Distribution Software Single-Bundle Distribution (1.2.0) 
    10|Active  | 1|jaxb-api (2.2.7) 
    11|Active  | 1|Sesame 2.1.1 onejar. (2.1.1) 
    12|Active  | 1|Apache Felix Gogo Command (0.8.0) 
    13|Active  | 1|Apache Felix Gogo Runtime (0.8.0) 
    14|Active  | 1|Apache Felix Gogo Shell (0.8.0) 
    15|Active  | 1|Apache ServiceMix :: Specs :: JSR-311 API 1.0 (2.7.0) 
    16|Active  | 1|osgi.cmpn (4.2.0.200908310645) 
    17|Active  | 1|provalet (1.0.0.SNAPSHOT) 
    18|Active  | 1|Metro Web Services API OSGi Bundle (2.1.0.b16) 
    19|Active  | 1|Prova compact (3.2.1) 

добро пожаловать и надеюсь, что другие пользователи будут работать с этим легче.