我在下面显示的异常中运行。 我尝试使用带有dosgi的注释发布webservie。但看起来注释会被忽略。
当我使用时 restProps.put(" service.exported.configs"," org.apache.cxf。 ws ");
在没有javax.ws.rs注释的Activator.java类中,它工作正常,我可以请求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 - >我没有名为" org.apache.servicemix.specs.jsr311-api-1.1"
的包我也开发了这个例子http://maksim.sorokin.dk/it/2011/09/18/maven-apache-felix-cxf-dosgi-an-example-of-dosgi-service/ - >但同样的例外
我使用
我的捆绑包是:
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 Activator(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 /远程服务/远程service.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中负责生成包
的部分<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.springframework.osgi.context.support.OsgiBundleXmlApplicationContext@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: {addressing=org.apache.cxf.ws.policy.WSPolicyFeature@667a0762, logging=org.apache.cxf.feature.LoggingFeature@353563e5, SOAP=org.apache.cxf.binding.soap.SoapBindingConfiguration@171868d4, SOAP.1_1=org.apache.cxf.binding.soap.SoapBindingConfiguration@171868d4, SOAP.1_2=org.apache.cxf.binding.soap.SoapBindingConfiguration@59a950ae, 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.apache.cxf.dosgi.dsw.handlers.JaxRSPojoConfigurationTypeHandler@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注释将被忽略。也许我对捆绑版本也有错误。
有人知道更多关于这个问题的内容以及我如何解决这个问题? 如果您需要更多信息,请告诉我。
亲切的问候 拉斯答案 0 :(得分: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)
亲切的问候,并希望其他用户可以更轻松地工作。