[jboss-user] [JBossWS] - Web serv ice consumer fails to configure automaticly through

baranowb do-not-reply at jboss.com
Tue May 15 12:41:07 EDT 2007


Hey. Im relativly new to jbossws. To make it read easier.

I have very simple web service (pojo is handling requests). I have used wstool from jboss 4.0.5 GA

Here is part of my wsdl:
<?xml version="1.0" encoding="UTF-8"?>
  | <definitions name='OperationsWService' targetNamespace='http://test.ws.gogo.java.net/' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://test.ws.gogo.java.net/' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
  | ....
  | <message name='Operations_sayHello'>
  |   <part name='String_1' type='xsd:string'/>
  |  </message>
  |  <message name='Operations_sayHelloResponse'>
  |   <part name='result' type='xsd:string'/>
  |  </message>
  | ....
  | 
  | <operation name='sayHello' parameterOrder='String_1'>
  |    <input message='tns:Operations_sayHello'/>
  |    <output message='tns:Operations_sayHelloResponse'/>
  |   </operation>
  | 
  | ....
  | <portType name='Operations'>
  |   .....
  |   <operation name='sayHello' parameterOrder='String_1'>
  |    <input message='tns:Operations_sayHello'/>
  |    <output message='tns:Operations_sayHelloResponse'/>
  |   </operation>
  |   .....
  |  </portType>
  |   .....
  |   <operation name='sayHello'>
  |    <soap:operation soapAction=''/>
  |    <input>
  |     <soap:body namespace='http://test.ws.gogo.java.net/' use='literal'/>
  |    </input>
  |    <output>
  |     <soap:body namespace='http://test.ws.gogo.java.net/' use='literal'/>
  |    </output>
  |   </operation>
  |   .....
  |  </binding>
  |  <service name='OperationsWService'>
  |   <port binding='tns:OperationsBinding' name='OperationsPort'>
  |    <soap:address location='REPLACE_WITH_ACTUAL_URL'/>
  |   </port>
  |  </service>
  | </definitions>

Problem is that when wsdl is returned after GET call service is not configured.

Here is client code:


  | ServiceFactory factory=null;
  | 		Call call =null;
  | 		QName stringXmlType=new QName("http://test.ws.gogo.java.net/","String_1");
  | 		QName stringResult=new QName("http://test.ws.gogo.java.net/","result");
  | 		
  | 			QName operationName = new QName("http://test.ws.gogo.java.net/", "sayHello");
  | 			factory = ServiceFactory.newInstance();
  | 			if(true)
  | 			{
  | 			
  | 			URL wsdlLocation = new URL("http://127.0.0.1:8080/war_to_deploy/OperationsWSAction" + "?wsdl");
  | 	        QName serviceName = new QName("http://test.ws.gogo.java.net/", "OperationsWService");
  | 	        Service service = (Service)factory.createService(wsdlLocation, serviceName);
  | 	        call = service.createCall();
  | 	        call.setTargetEndpointAddress("http://127.0.0.1:8080/war_to_deploy/OperationsWSAction");
  | 	        
  | 	        
  | 	        call.setOperationName(operationName);
  | 	        
  | 	        
  | 	        //call.addParameter("String_1", stringXmlType, ParameterMode.IN);
  | 	        //String first = "4";
  | 	        //String second = "7!";
  | 	        //Integer first = new Integer(4);
  | 	        //Integer second= new Integer(7);
  | 	        //Object retObj = call.invoke(new Object[]{first, second});
  | 			}else
  |                           {...}
  | 
  | 

However this code causes on the client side:
AxisFault
  |  faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Client
  |  faultSubcode: 
  |  faultString: Cannot find child element: String_1
  |  faultActor: 
  |  faultNode: 
  |  faultDetail: 
  | 	{http://xml.apache.org/axis/}stackTrace:Cannot find child element: String_1

and
javax.xml.rpc.JAXRPCException: Cannot find child element: String_1
  |         at org.jboss.ws.binding.soap.SOAPBindingProvider.getParameterFromMessage(SOAPBindingProvider.java:799)
  |         at org.jboss.ws.binding.soap.SOAPBindingProvider.unbindRequestMessage(SOAPBindingProvider.java:241)
  |         at org.jboss.ws.server.ServiceEndpointInvoker.invoke(ServiceEndpointInvoker.java:112)
  |         at org.jboss.ws.server.ServiceEndpoint.handleRequest(ServiceEndpoint.java:209)
  |         at org.jboss.ws.server.ServiceEndpointManager.processSOAPRequest(ServiceEndpointManager.java:355)

on the server side. Which is correct behaviour because message looks as follows:


  | <?xml version="1.0" encoding="UTF-8"?>
  | <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  | <soapenv:Body>
  | <ns1:sayHello soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://test.ws.gogo.java.net/">
  | <ns1:arg0 xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">Opuce</ns1:arg0>
  | </ns1:sayHello>
  | </soapenv:Body>
  | </soapenv:Envelope>
  | 

However if clint is configured by hand it works perfectly:

  | ServiceFactory factory=null;
  | 		Call call =null;
  | 		QName stringXmlType=new QName("http://test.ws.gogo.java.net/","String_1");
  | 		QName stringResult=new QName("http://test.ws.gogo.java.net/","result");
  | 		try {
  | 			QName operationName = new QName("http://test.ws.gogo.java.net/", "sayHello");
  | 			factory = ServiceFactory.newInstance();
  | 			if(false)
  | 			{
  | 			
  | 			.....
  | 			}else
  | 			{
  | 				
  | 			      Service service = factory.createService(new QName("OperationsWService"));
  | 
  | 			      call= service.createCall();
  | 			      call.setOperationName(operationName);
  | 			      call.addParameter("String_1", stringXmlType, ParameterMode.IN);
  | 			      call.setReturnType(stringResult,String.class);
  | 
  | 			      call.setTargetEndpointAddress("http://127.0.0.1:8080/war_to_deploy/OperationsWSAction");
  | 
  | 			     
  | 			}
  | 


What could be the problem here?
Im running WinXp Sp2
jboss 4.0.5GA
JDK1,5 update 7

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4045867#4045867

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4045867



More information about the jboss-user mailing list