[ 
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

        

Reply via email to