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/servicemix/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>