Where abouts do I need my service.wsdl file? The component can no longer
find it with the classpath entry.
-----Original Message-----
From: Freeman Fang [mailto:[EMAIL PROTECTED]
Sent: Tuesday, 9 September 2008 4:10 PM
To: [email protected]
Subject: Re: [JUNK]Re: [JUNK]Re: [JUNK]Re: Soap action and wsdl
forwarding.
Hi,
try add
<classpath>
<location>.</location>
</classpath>
into your xbean.xml
and change
wsdl="classpath:service.wsdl"
to
wsdl="service.wsdl"
Regards
Freeman
Ward, Lyall wrote:
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/