The issue appears to be related to the portName attribute on the @WebService annotation of the implementation bean (generated by default by CXF's wsdl2java). Without that attribute, everything deploys fine. If I add that attribute, the cxfbc endpoint doesn't redeploy when the SA is registered and restarted. I've attached a test case built by combining the wsdl_first example into a single bundle.
As separate OSGi bundles, the portName's presence doesn't prevent deployment. Also, combined into a single bundle, the endpoint deploys at first but doesn't redeploy when the service assembly is registered. My suspicion is that the portName attribute is used as the endpoint name causing a (silent) name conflict. This would explain why flipping the order of declaration in the beans.xml causes the other endpoint to be deployed successfully and also why packaging as separate OSGi bundles (translated to separate service assemblies) is successful - no name conflict within a given SA. Dan
cxf-wsdl-first-osgi-combined-package.tar.gz
Description: GNU Zip compressed data
On Oct 31, 2010, at 8:39 AM, Freeman Fang wrote:
> Could you please append a test case which I can build and deploy?
>
> Freeman
> On 2010-10-31, at 下午8:15, Dan Powell wrote:
>
>> In particular you'll see the port endpoint is listed, but not the :soap
>> endpoint.
>>
>> Apache ServiceMix (4.2.0)
>>
>> ka...@root> nmr:list
>> Endpoints
>> ---------
>> servicemix-vfs
>> {http://servicemix.org/wsnotification}Publisher:Anonymous
>> servicemix-cxf-se
>> servicemix-scripting
>> servicemix-smpp
>> servicemix-cxf-bc
>> servicemix-snmp
>> servicemix-jms
>> servicemix-file
>> servicemix-drools
>> {http://servicemix.org/wsnotification}CreatePullPoint:Broker
>> {http://servicemix.org/wsnotification}NotificationBroker:Broker
>> servicemix-quartz
>> servicemix-http
>> servicemix-eip
>> servicemix-ftp
>> servicemix-wsn2005
>> servicemix-osworkflow
>> servicemix-exec
>> {urn:foo}FooService:FooImplPort
>> servicemix-bean
>> servicemix-validation
>> servicemix-camel
>> root
>> servicemix-mail
>> servicemix-saxon
>>
>> ka...@root> jbi:list
>> Components
>> ----------
>> State Name Description
>> [Started ] [servicemix-http ]
>> [Started ] [servicemix-snmp ]
>> [Started ] [servicemix-file ]
>> [Started ] [servicemix-wsn2005 ]
>> [Started ] [servicemix-saxon ]
>> [Started ] [servicemix-exec ]
>> [Started ] [servicemix-bean ]
>> [Started ] [servicemix-jms ]
>> [Started ] [servicemix-vfs ]
>> [Started ] [servicemix-ftp ]
>> [Started ] [servicemix-cxf-se ]
>> [Started ] [servicemix-eip ]
>> [Started ] [servicemix-scripting ]
>> [Started ] [servicemix-quartz ]
>> [Started ] [servicemix-mail ]
>> [Started ] [servicemix-osworkflow ]
>> [Started ] [servicemix-smpp ]
>> [Started ] [servicemix-camel ]
>> [Started ] [servicemix-validation ]
>> [Started ] [servicemix-drools ]
>> [Started ] [servicemix-cxf-bc ]
>>
>> Service Assemblies
>> ------------------
>> State Name Description
>> [Started ] [foo-bundle ]
>>
>> On Oct 31, 2010, at 3:00 AM, Freeman Fang wrote:
>>
>>> Hi Dan,
>>>
>>> What's the exact smx4 version you are using?
>>> What's the output for both nmr:list and jbi:list after you deploy your
>>> bundle?
>>>
>>> Freeman
>>> On 2010-10-30, at 上午5:42, Dan Powell wrote:
>>>
>>>> Yes, that's what I've done. What I see in the logs is that both endpoints
>>>> get deployed, the publish addresses are both logged, but after "All
>>>> endpoints have been deployed and components initialized. Registering
>>>> service assembly." I see "Changing SA state to Stopped" followed by a
>>>> "Registering endpoint" but only for the one with the
>>>> ENDPOINT_NAME=FooImplPort not the ENDPOINT_NAME=soap. The second endpoint
>>>> never gets restarted.
>>>>
>>>> Dan
>>>>
>>>> On Oct 29, 2010, at 3:17 PM, Jean-Baptiste Onofré wrote:
>>>>
>>>>> Hi Dan,
>>>>>
>>>>> You can gather cxfbc and cxfse in the same xbean.xml (and so in the same
>>>>> bundle).
>>>>> In fact, now you can gather all components in the same xbean.xml. After
>>>>> you can package this xbean.xml in a bundle or directly drop into the
>>>>> deploy folder.
>>>>>
>>>>> To "expose" the component endpoints as an OSGi service, simply add:
>>>>>
>>>>> <bean class="org.apache.servicemix.commons.osgi.EndpointExporter"/>
>>>>>
>>>>> Take a look on:
>>>>> http://servicemix.apache.org/SMX4/creating-an-osgi-bundle-for-deploying-jbi-endpoints.html
>>>>> http://servicemix.apache.org/SMX4NMR/3-deploying-jbi-components-without-the-jbi-packaging.html
>>>>> http://servicemix.apache.org/file-to-xmpp-bridge.html
>>>>>
>>>>> Regards
>>>>> JB
>>>>>
>>>>> On 10/29/2010 05:54 PM, Dan Powell wrote:
>>>>>> Is it possible to combine the cxfbc:consumer and cxfse:endpoint into a
>>>>>> single bundle? t seems the second endpoint to start replaces the first.
>>>>>> When I list both in the Spring beans.xml with the cxfbc:consumer first,
>>>>>> I see the publish address for both endpoints (one as
>>>>>> http://0.0.0.0:9090/foo and the other as
>>>>>> jbi://ID-10-122-125-215-12bf890562c-2-0) logged to data/servicemix.log,
>>>>>> but the HTTP port is not listening. Also if I reverse the order and
>>>>>> declare the cxfbc:consumer after the cxfse:endpoint, the HTTP port is
>>>>>> listening and serves the ?wsdl request but invocations of the service
>>>>>> result in "Could not dispatch exchange. No matching endpoints."
>>>>>>
>>>>>> Thanks!
>>>>>>
>>>>>> Dan
>>>>
>>>
>>>
>>> --
>>> Freeman Fang
>>>
>>> ------------------------
>>>
>>> FuseSource: http://fusesource.com
>>> blog: http://freemanfang.blogspot.com
>>> twitter: http://twitter.com/freemanfang
>>> Apache Servicemix:http://servicemix.apache.org
>>> Apache Cxf: http://cxf.apache.org
>>> Apache Karaf: http://karaf.apache.org
>>> Apache Felix: http://felix.apache.org
>>>
>>
>
>
> --
> Freeman Fang
>
> ------------------------
>
> FuseSource: http://fusesource.com
> blog: http://freemanfang.blogspot.com
> twitter: http://twitter.com/freemanfang
> Apache Servicemix:http://servicemix.apache.org
> Apache Cxf: http://cxf.apache.org
> Apache Karaf: http://karaf.apache.org
> Apache Felix: http://felix.apache.org
>
smime.p7s
Description: S/MIME cryptographic signature
