Hi again,
I've attempted to setup the cxf-bc to provide the cconsumer and
provider, however on deployment I get the following error:
I have also included the configuration of my beans below. The googling I
have done suggests I need to import the namespace, ut I cannot find how
to do that in the context of servicemix.
Any ideas how I can solve this?
Thanks,
Lyall.
<component-name>servicemix-cxf-bc</component-name>
<component-task-result-details>
<task-result-details>
<task-id>deploy</task-id>
<task-result>FAILED</task-result>
<message-type>ERROR</message-type>
<task-status-msg>
<msg-loc-info>
<loc-token/>
<loc-message>Unable to parse result string</loc-message>
</msg-loc-info>
</task-status-msg>
<exception-info>
<nesting-level>1</nesting-level>
<loc-token/>
<loc-message>org.apache.cxf.endpoint.EndpointException</loc-message>
<stack-trace><![CDATA[javax.jbi.management.DeploymentException:
org.apache.cxf.endpoint.EndpointException
at
org.apache.servicemix.cxfbc.CxfBcConsumer.validate(CxfBcConsumer.java:36
0)
at
org.apache.servicemix.common.AbstractDeployer.validate(AbstractDeployer.
java:58)
at
org.apache.servicemix.common.xbean.BaseXBeanDeployer.validate(BaseXBeanD
eployer.java:55)
at
org.apache.servicemix.common.xbean.AbstractXBeanDeployer.deploy(Abstract
XBeanDeployer.java:96)
at
org.apache.servicemix.common.BaseServiceUnitManager.doDeploy(BaseService
UnitManager.java:88)
at
org.apache.servicemix.common.BaseServiceUnitManager.deploy(BaseServiceUn
itManager.java:69)
at
org.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssem
bly(DeploymentService.java:508)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateServiceA
ssembly(AutoDeploymentService.java:353)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive(
AutoDeploymentService.java:256)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.monitorDirecto
ry(AutoDeploymentService.java:664)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.access$800(Aut
oDeploymentService.java:62)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService$1.run(AutoDepl
oymentService.java:628)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
Caused by: org.apache.cxf.endpoint.EndpointException
at
org.apache.cxf.endpoint.EndpointImpl.createBinding(EndpointImpl.java:132
)
at
org.apache.cxf.endpoint.EndpointImpl.<init>(EndpointImpl.java:81)
at
org.apache.servicemix.cxfbc.CxfBcConsumer.validate(CxfBcConsumer.java:32
1)
... 13 more
Caused by: org.apache.cxf.BusException: No binding factory for namespace
http://schemas.xmlsoap.org/wsdl/http/ registered.
at
org.apache.cxf.binding.BindingFactoryManagerImpl.getBindingFactory(Bindi
ngFactoryManagerImpl.java:91)
at
org.apache.cxf.endpoint.EndpointImpl.createBinding(EndpointImpl.java:129
)
... 15 more
]]></stack-trace>
</exception-info>
</task-result-details>
</component-task-result-details>
</component-task-result>
<component-task-result
xmlns="http://java.sun.com/xml/ns/jbi/management-message">
<component-name>servicemix-eip</component-name>
<component-task-result-details>
<task-result-details>
<task-id>deploy</task-id>
<task-result>SUCCESS</task-result>
</task-result-details>
</component-task-result-details>
</component-task-result>
<component-task-result
xmlns="http://java.sun.com/xml/ns/jbi/management-message">
<component-name>servicemix-bean</component-name>
<component-task-result-details>
<task-result-details>
<task-id>deploy</task-id>
<task-result>SUCCESS</task-result>
</task-result-details>
</component-task-result-details>
</component-task-result>
</jbi-task-result>
</jbi-task>
at
org.apache.servicemix.jbi.framework.ManagementSupport.failure(Management
Support.java:125)
at
org.apache.servicemix.jbi.framework.ManagementSupport.failure(Management
Support.java:111)
at
org.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssem
bly(DeploymentService.java:543)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateServiceA
ssembly(AutoDeploymentService.java:353)
... 6 more
Bean Definitions:
<beans xmlns:http='http://servicemix.apache.org/http/1.0'
xmlns="http://www.springframework.org/schema/beans"
xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0"
xmlns:xsi="http://http://www.w3.org/2001/XMLSchema-instance"
xmlns:svcns='http://www.webserviceX.NET'
xsi:schemaLocation="http://servicemix.apache.org/cxfbc/1.0
http://servicemix.apache.org/schema/servicemix-cxfbc-3.2.2.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<cxfbc:consumer wsdl="classpath:service.wsdl"
targetEndpoint="3700af92-6ef7-4a42-9d61-4d241515f715"
targetService="svcns:UKLocation"
/>
<cxfbc:provider wsdl="classpath:service.wsdl"
endpoint="UKLocationSoap"
service="svcns:UKLocation"
locationURI="http://www.webservicex.com/uklocation.asmx"/>
</beans>
-----Original Message-----
From: Freeman Fang [mailto:[EMAIL PROTECTED]
Sent: Friday, 5 September 2008 6:11 PM
To: [email protected]
Subject: [JUNK]Re: [JUNK]Re: [JUNK]Re: Soap action and wsdl forwarding.
create a cxf configration file named cxf-proxy.xml like
<beans xmlns="*http*://www.springframework.org/schema/beans
<http://www.springframework.org/schema/beans>"
xmlns:xsi="*http*://www.w3.org/2001/XMLSchema-instance
<http://www.w3.org/2001/XMLSchema-instance>"
xmlns:*http*-conf="*http*://*cxf*.apache.org/transports/*http*/*configur
ation*
<http://cxf.apache.org/transports/http/configuration>"
xmlns:conf-sec="*http*://*cxf*.apache.org/*configuration*/security
<http://cxf.apache.org/configuration/security>"
xsi:schemaLocation="*http*://*cxf*.apache.org/transports/*http*/*configu
ration*
<http://cxf.apache.org/transports/http/configuration>
*http*://*cxf*.apache.org/schemas/*configuration*/*http*-conf.xsd
<http://cxf.apache.org/schemas/configuration/http-conf.xsd>
*http*://www.springframework.org/schema/beans
<http://www.springframework.org/schema/beans>
*http*://www.springframework.org/schema/beans/spring-beans-2.0.xsd
<http://www.springframework.org/schema/beans/spring-beans-2.0.xsd>">
<*http*-conf:conduit name="{*yournamespaceinthewsdl*
<http://www.webserviceX.NET>}youendpointinthewsdl.*http*-conduit">
<*http*-conf:client ProxyServer="proxyServerAddres"
ProxyServerPort="80"/>
<*http*-conf:proxyAuthorization>
<conf-sec:UserName>user</conf-sec:UserName>
<conf-sec:Password>password</conf-sec:Password>
</*http*-conf:proxyAuthorization>
</*http*-conf:conduit>
</beans>
And add busCfg="cxf-proxy.xml" attribute for cxf bc provider xbean.xml,
this should work.
Regards
Freeman
Guillaume Nodet wrote:
> I think Lyall was thinking about setting the parameters of a standard
> HTTP proxy.
> CXF support those as indicated on
> http://cwiki.apache.org/CXF20DOC/client-http-transport.html.
> I'm just not sure how to apply those parameters to a CXF endpoint.
>
> On Fri, Sep 5, 2008 at 9:59 AM, Freeman Fang <[EMAIL PROTECTED]>
wrote:
>
>> Hi Lyall,
>>
>> I think you can use cxf bc as proxy with smx 3.2.2 release.
>> Please take a look at similar discussion thread[1]
>>
>>
[1]http://cwiki.apache.org/SM/discussion-forums.html#nabble-td18571235%7
Ca18583906
>>
>> Regards
>> Freeman
>>
>> Ward, Lyall wrote:
>>
>>> So just so I am clear what I need to do I need to use version a
snapshot
>>> version of 3.3, 3.2.2 and 3.2.3 will not have the support I need?
>>> If I use the cxf am I able to use the older 3.2.2? Does it have
proxy
>>> support?
>>>
>>> Thanks,
>>> Lyall.
>>> -----Original Message-----
>>> From: Guillaume Nodet [mailto:[EMAIL PROTECTED] Sent: Friday, 5
September
>>> 2008 5:41 PM
>>> To: [email protected]
>>> Subject: [JUNK]Re: [JUNK]Re: Soap action and wsdl forwarding.
>>>
>>> Soap action forwarding should work with a pair of CXF consumer /
>>> provider or a pair of HTTP endpoint using <http:soap-consumer/> and
>>> <http:soap-provider />.
>>> Both will require the WSDL to be set on the consumer and provider,
but
>>> you can deploy those in a single service unit. Proxy support has
>>> been added recently on the <http:soap-provider/> endpoint so if you
>>> want to use those, I'd suggest you use a snapshot version of
>>> servicemix-http.
>>>
>>> Soap actions for the <http:endpoint/> only work by hard setting the
>>> soap action, so as you said, it won't work for multiple web methods.
>>>
>>> On Fri, Sep 5, 2008 at 8:40 AM, Ward, Lyall <[EMAIL PROTECTED]>
wrote:
>>>
>>>
>>>> Hi again, I'm still having some trouble.
>>>>
>>>> It seems I either have the choice of proxy support (from
3.3-SNAPSHOT)
>>>> or the promised (but untested) ability to have soapActions
forwarded
>>>> through to the external service. Is there anyway I can have both?
>>>>
>>>>
>>> Proxy
>>>
>>>
>>>> support for the servicemix-http (via jmx consolse configuration) is
>>>> available in 3.2.2 why is it no available in 3.2.3?
>>>>
>>>> Also I have been able to find a method of storing then providing
the
>>>> wsdl from the conusmer. I have found two versions that work, both
>>>> storing a modified wsdl file as a resource in the consumer
>>>> <http:endpoint/> and using the wsdResource property. The wsdl I
have
>>>> stored here has to be modified and the modifications need to be
>>>>
>>>>
>>> either:
>>>
>>>
>>>> - Remove all services and bindings. Also remove all porttypes aside
>>>>
>>>>
>>> from
>>>
>>>
>>>> the soap porttype.
>>>> - Remove all services aside from the soap one and set its
>>>> service/portname to match the service/endpoint.
>>>>
>>>> When I do either of these I am able to add ?wsdl to the endpoint
url
>>>>
>>>>
>>> and
>>>
>>>
>>>> fetch a wsdl file. However in both cases the bindings are lost,
losing
>>>> the soapAction information along with other parts of the binding
>>>> information. Even if I leave the binding in the file servicemix
>>>>
>>>>
>>> appears
>>>
>>>
>>>> to remove it and replace it with a very minimal one that is not
able
>>>>
>>>>
>>> to
>>>
>>>
>>>> be used for my requirements.
>>>>
>>>> Is there a way to prevent this modificaiton?
>>>>
>>>> Thanks for your help so far,
>>>> Cheers,
>>>> Lyall.
>>>>
>>>> -----Original Message-----
>>>> From: Guillaume Nodet [mailto:[EMAIL PROTECTED]
>>>> Sent: Tuesday, 26 August 2008 5:53 PM
>>>> To: [email protected]
>>>> Subject: [JUNK]Re: Soap action and wsdl forwarding.
>>>>
>>>> Proxy support for the <http:provider/> and <http:soap-provider/>
>>>> endpoints is available since yesterday.
>>>> You need to download / build the latest components (or grab a
snapshot
>>>> of 3.3) and use the following:
>>>>
>>>> <http:provider proxyHost="xxx" proxyPort="80" ...
>>>>
>>>> On Tue, Aug 26, 2008 at 8:00 AM, Ward, Lyall <[EMAIL PROTECTED]>
>>>>
>>>>
>>> wrote:
>>>
>>>
>>>>> Gert,
>>>>>
>>>>> Thank you for your reply, I am still having trouble.
>>>>>
>>>>> I have changed my provider to match the wsdl service/endpoint
>>>>>
>>>>>
>>> nameing.
>>>
>>>
>>>>> ### new provider xbean.xml
>>>>> <?xml version='1.0' encoding='UTF-8'?>
>>>>> <beans xmlns:http='http://servicemix.apache.org/http/1.0'
>>>>> xmlns:svcns='http://www.webserviceX.NET'>
>>>>> <http:soap-provider service='svcns:UKLocation'
>>>>> endpoint='UKLocationSoap'
>>>>>
>>>>> locationURI='http://www.webservicex.com/uklocation.asmx'
>>>>>
>>>>>
>>>>>
>>> wsdl='http://www.webservicex.com/uklocation.asmx?WSDL'
>>>
>>>
>>>>> validateWsdl="false"
>>>>> useJbiWrapper="false"
>>>>> />
>>>>> </beans>
>>>>>
>>>>> I've also upgraded to apache-servicemix-3.2.3-20080825.225502-19
and
>>>>> switched my provider to a <http:soap-provider/> as you suggested.
>>>>> Service assembly compiles and deploys fine, however it still fails
to
>>>>> discover the wsdl from the provider. Show the folloing in the
debug
>>>>> ### Debug
>>>>> DEBUG - ConsumerProcessor - Receiving HTTP request:
GET
>>>>> /ukLocation-3700af92-6ef7-4a42-9d61-4d241515f715/main.wsdl
HTTP/1.1
>>>>> Host: bned50077171a.dhcp.bne.sap.corp:8192
>>>>> User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB;
>>>>>
>>>>>
>>>> rv:1.8.1.16)
>>>>
>>>>
>>>>> Gecko/20080702 Firefox/2.0.0.16
>>>>> Accept:
>>>>>
>>>>>
>>>>>
>>>
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plai
>>>
>>>
>>>>> n;q=0.8,image/png,*/*;q=0.5
>>>>> Accept-Language: en-gb,en;q=0.5
>>>>> Accept-Encoding: gzip,deflate
>>>>> Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
>>>>> Keep-Alive: 300
>>>>> Connection: keep-alive
>>>>>
>>>>>
>>>>> DEBUG - HttpComponent - Retrieving proxied
endpoint
>>>>> definition
>>>>> DEBUG - EIPComponent - Querying service
description
>>>>> for
>>>>>
>>>>>
>>>>>
>>>
ServiceEndpoint[service={http://www.webserviceX.NET}wireTap,endpoint=370
>>>
>>>
>>>>> 0af92-6ef7-4a42-9d61-4d241515f715]
>>>>> DEBUG - HttpComponent - PortType for
>>>>> targetService/targetEndpoint could not be found
>>>>>
>>>>> It does not appear to have tried to get the wsdl from the provider
at
>>>>> all now.
>>>>>
>>>>> Finally the assembly no longer works as it appears the
>>>>> <http:soap-provider/> is not using the proxy settings which I have
>>>>>
>>>>>
>>>> given
>>>>
>>>>
>>>>> the servicemix-http component which are required for me to access
the
>>>>> external service. I'm unsure if the saopaction code is working or
not
>>>>> because of this.
>>>>>
>>>>> Thanks,
>>>>> Lyall.
>>>>>
>>>>>
>>>>>
>>>>> -----Original Message-----
>>>>> From: Gert Vanthienen [mailto:[EMAIL PROTECTED]
>>>>> Sent: Friday, 22 August 2008 3:03 PM
>>>>> To: [email protected]
>>>>> Subject: [JUNK]Re: Soap action and wsdl forwarding.
>>>>>
>>>>> Lyall,
>>>>>
>>>>> If the information can not be retrieved from the WSDL, this
usually
>>>>> means that there is a mismatch between the service/endpoint name
and
>>>>>
>>>>>
>>>> the
>>>>
>>>>
>>>>> service/port names in the wsdl. The two should match for the
>>>>> http:endpoint to find what it needs.
>>>>>
>>>>> For the SOAPAction, could you try replacing your <http:endpoint/>
>>>>>
>>>>>
>>> with
>>>
>>>
>>>>> <http:soap-provider/> with a ServiceMix 3.2.3-SNAPSHOT (available
at
>>>>>
>>>>>
>>>>>
>>>
http://people.apache.org/repo/m2-snapshot-repository/org/apache/servicem
>>>
>>>
>>>>> ix/apache-servicemix/3.2.3-SNAPSHOT/).
>>>>> I have just yesterday committed a few fixes that might get this
issue
>>>>> resolved.
>>>>>
>>>>> Regards,
>>>>>
>>>>> Gert
>>>>>
>>>>> Ward, Lyall wrote:
>>>>>
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I am attempting to setup what appears to be a very simple web
>>>>>>
>>>>>>
>>> service
>>>
>>>
>>>>>> proxy using servicemix. I'm using servicemix version 3.2.2
>>>>>>
>>>>>>
>>> standalone
>>>
>>>
>>>>>> (though eventually tomcat integration would be nice) on jvm
>>>>>>
>>>>>>
>>>>> 1.5.0_14_b03
>>>>>
>>>>>
>>>>>> on windows vista. The configuration I am attempting to use is
using
>>>>>> consumer and provider binding component with a wiretap in the
middle
>>>>>> sending a copy of the message to a metering engine.
>>>>>>
>>>>>> I have a configuration of these component that works for
forwarding
>>>>>>
>>>>>>
>>>>> the
>>>>>
>>>>>
>>>>>> soap requests to the external service and causing the metering to
be
>>>>>> executed. However there are 2 issues I've not been able to solve.
>>>>>>
>>>>>> I am unable to use the enpoint I created to provide the wsdl file
of
>>>>>>
>>>>>>
>>>>> the
>>>>>
>>>>>
>>>>>> service, and I am unable to have the soapaction header from the
>>>>>>
>>>>>>
>>>>> original
>>>>>
>>>>>
>>>>>> request forwarded to the external service. I have worked around
this
>>>>>> with a static definition of the soap action, but for services
that
>>>>>> provide multiple methods this will not work and it is not
desireable
>>>>>>
>>>>>>
>>>>> to
>>>>>
>>>>>
>>>>>> have a provider binding component for each method.
>>>>>>
>>>>>> When I deploy the component and also when I attempt to fetch the
>>>>>>
>>>>>>
>>> wsdl
>>>
>>>
>>>>> I
>>>>>
>>>>>
>>>>>> can see an http component attempting to access the wsdl (appears
>>>>>>
>>>>>>
>>> that
>>>
>>>
>>>>>> way to me at least) but with no success, the debug is as follows.
>>>>>>
>>>>>> Is there something in the defintion of the components I am
missing?
>>>>>>
>>>>>>
>>> I
>>>
>>>
>>>>>> have a binding component and jsr181 service assembly also and the
>>>>>>
>>>>>>
>>>> wsdl
>>>>
>>>>
>>>>>> generation and fetching automaticlly works in that case.
>>>>>>
>>>>>> Thanks in advance,
>>>>>> Lyall.
>>>>>>
>>>>>> ### on startup of the provier
>>>>>> DEBUG - HttpComponent - Port for
service/endpoint
>>>>>>
>>>>>>
>>>>> could
>>>>>
>>>>>
>>>>>> not be found
>>>>>>
>>>>>> ### on request of the wsdl
>>>>>> DEBUG - ConsumerProcessor - Receiving HTTP request:
GET
>>>>>> /UKLocation/main.wsdl HTTP/1.1
>>>>>> Host: mymachine.network.com:8192
>>>>>> User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB;
>>>>>>
>>>>>>
>>>>> rv:1.8.1.16)
>>>>>
>>>>>
>>>>>> Gecko/20080702 Firefox/2.0.0.16
>>>>>> Accept:
>>>>>>
>>>>>>
>>>>>>
>>>
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plai
>>>
>>>
>>>>>> n;q=0.8,image/png,*/*;q=0.5
>>>>>> Accept-Language: en-gb,en;q=0.5
>>>>>> Accept-Encoding: gzip,deflate
>>>>>> Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
>>>>>> Keep-Alive: 300
>>>>>> Connection: keep-alive
>>>>>>
>>>>>>
>>>>>> DEBUG - HttpComponent - Retrieving proxied
endpoint
>>>>>> definition
>>>>>> DEBUG - EIPComponent - Querying service
>>>>>>
>>>>>>
>>> description
>>>
>>>
>>>>>> for
>>>>>>
>>>>>>
>>>>>>
>>>
ServiceEndpoint[service={http://www.webserviceX.NET}wireTap,endpoint=end
>>>
>>>
>>>>>> point]
>>>>>> DEBUG - EIPComponent - No description found for
>>>>>> {http://www.webserviceX.NET}wireTap:endpoint
>>>>>> DEBUG - JettyContextManager - Dispatching job:
>>>>>> [EMAIL PROTECTED],io=1,w=true,b=false|false]
>>>>>> DEBUG - JettyContextManager - Dispatching job:
>>>>>> [EMAIL PROTECTED],io=1,w=true,b=false|false]
>>>>>>
>>>>>>
>>>>>> ### CONSUMER XBEAN.XML
>>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>>> <beans xmlns:http="http://servicemix.apache.org/http/1.0"
>>>>>> xmlns:ukl="http://www.webserviceX.NET">
>>>>>>
>>>>>> <http:endpoint service="ukl:UKLocationIn"
>>>>>> endpoint="soap"
>>>>>> targetService="ukl:wireTap"
>>>>>> targetEndpoint="endpoint"
>>>>>> locationURI="http://0.0.0.0:8192/UKLocation/"
>>>>>>
defaultMep="http://www.w3.org/2004/08/wsdl/in-out"
>>>>>> role="consumer"
>>>>>> soap="true"
>>>>>> />
>>>>>> </beans>
>>>>>>
>>>>>> ### WIRE TAP XBEAN.XML
>>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>>> <beans xmlns:eip="http://servicemix.apache.org/eip/1.0"
>>>>>> xmlns:ukl="http://www.webserviceX.NET">
>>>>>>
>>>>>> <eip:wire-tap service="ukl:wireTap" endpoint="endpoint">
>>>>>> <eip:target>
>>>>>> <eip:exchange-target service="ukl:UKLocation"
endpoint="Soap"/>
>>>>>> </eip:target>
>>>>>> <eip:inListener>
>>>>>> <eip:exchange-target service="ukl:events" endpoint="endpoint"
/>
>>>>>> </eip:inListener>
>>>>>> </eip:wire-tap>
>>>>>>
>>>>>> </beans>
>>>>>>
>>>>>> ### PROVIDER XBEAN.XML
>>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>>> <beans xmlns:http="http://servicemix.apache.org/http/1.0"
>>>>>> xmlns:ukl="http://www.webserviceX.NET">
>>>>>> <http:endpoint service="ukl:UKLocation"
>>>>>> endpoint="Soap"
>>>>>> role="provider"
>>>>>>
>>>>>>
>>>>>>
>>> soapAction="http://www.webserviceX.NET/ValidateUKAddress"
>>>
>>>
>>>>>>
locationURI="http://www.webservicex.com/uklocation.asmx"
>>>>>> defaultMep="http://www.w3.org/2004/08/wsdl/in-out"
>>>>>> soap="true"
>>>>>> soapVersion="1.1"
>>>>>>
>>>>>> wsdlResource="http://www.webservicex.net/uklocation.asmx?wsdl"
>>>>>> />
>>>>>> </beans>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>> --
>>>> Cheers,
>>>> Guillaume Nodet
>>>> ------------------------
>>>> Blog: http://gnodet.blogspot.com/
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>
>
>
>