[
https://issues.apache.org/jira/browse/DOSGI-110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13209703#comment-13209703
]
JBert commented on DOSGI-110:
-----------------------------
First of all, a workaround:
Substitute the context-parameter for org.apache.cxf.ws.address - this will let
CXF create another Jetty server and bind everything properly. This may seem
like hard-coding a port-number, but properties defined on declarative services
can be overridden when using the Config Admin component. Manually-registered
services could look at their Configuration before registering.
Second, factory.setAddress("..."); looks like the only way to support
..httpservice.context. However, this implicates that the CXF servlet needs to
be bound only once and that each service is then a path relative to the CXF
servlet.
Example:
Service configures http context parameters "/foo". DOSGi picks it up and binds
a servlet to the alias "/cxf", then registers the service using the address
"/foo". Result: the service becomes available on http://localhost:<http service
cfg>/cxf/foo instead of just http://localhost:<http service cfg>/foo.
I believe this extra component in the path shouldn't be an issue, and maybe we
could even make the servlet alias configurable using a system or config-admin
property.
> Unable to export multiple services
> ----------------------------------
>
> Key: DOSGI-110
> URL: https://issues.apache.org/jira/browse/DOSGI-110
> Project: CXF Distributed OSGi
> Issue Type: Bug
> Affects Versions: 1.3
> Environment: Karaf 2.2.5, DOSGi multi-bundle, CXF 2.5.2 from DOSGi
> multi-bundle, Aries transaction manager
> Reporter: JBert
> Priority: Critical
> Attachments: foobarservices.zip
>
>
> When I register more than one service, the second service will make the
> following exception be printed to the console (this exception is nowhere
> caught until it reaches the java.concurrent code):
> {quote}
> Exception in thread "pool-9-thread-4" java.lang.RuntimeException: Soap 1.1
> endpoint already registered on address /
> at
> org.apache.cxf.binding.soap.SoapBindingFactory.addListener(SoapBindingFactory.java:862)
> at org.apache.cxf.endpoint.ServerImpl.start(ServerImpl.java:131)
> at
> org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:204)
> at
> org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:207)
> at
> org.apache.cxf.dosgi.dsw.handlers.HttpServiceConfigurationTypeHandler.createServer(HttpServiceConfigurationTypeHandler.java:173)
> at
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore.exportService(RemoteServiceAdminCore.java:247)
> at
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance$1.run(RemoteServiceAdminInstance.java:72)
> at
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance$1.run(RemoteServiceAdminInstance.java:67)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance.exportService(RemoteServiceAdminInstance.java:66)
> at
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance.exportService(RemoteServiceAdminInstance.java:38)
> at
> org.apache.cxf.dosgi.topologymanager.TopologyManager$2.run(TopologyManager.java:267)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> at java.lang.Thread.run(Thread.java:679)
> {quote}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira