[SoapRMI] [SPAM:# 57%] =?iso-8859-1?Q?Re:solved_:-)_[Re:__=5Fhow=5Fto=5Fcall=5Fapache-soap=5F]?=

nodep@libero.it nodep_at_libero.it
Wed, 11 Dec 2002 22:17:27 +0100


Yeah! Now it works! ^_^
Very thanks Alek!

Stefano Pedon

> hi Stefano,
> 
> i have looked agin on traces and found what is the problem!
> 
> in XSOAP whn you contact service you do not need ot specify complete 
> path if it is only one service but this is not case for AXIS. if you 
> look on both traces (below) you will see that when you use XSOAP your
 
> URL has only "/" but for Apache AXIS client you have 
> "/soap/servlet/rpcrouter"
> 
> so make sure that XSOAP HelloClient uses argument 
> http://localhost:8080/soap/servlet/rpcrouter and it should just work 
> fine ;-) .
> 
> alek
> 
> AXIS client:
> 
> POST /soap/servlet/rpcrouter HTTP/1.0
> Host: localhost:8080
> Content-Type: text/xml; charset=utf-8
> Content-Length: 441
> SOAPAction: ""
> 
> <?xml version='1.0' encoding='UTF-8'?>
> <SOAP-ENV:Envelope xmlns:SOAP-
> ENV="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> <SOAP-ENV:Body>
> <ns1:sayHello xmlns:ns1="urn:HelloWorld" 
> SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
> <box xsi:type="xsd:string">ste</box>
> </ns1:sayHello>
> </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>
> 
> 
> XSOAP client:
> 
> POST / HTTP/1.0
> Host: localhost
> User-Agent: SoapRMI/1.2
> Content-Type: text/xml; charset=utf-8
> Content-Length: 459
> SOAPAction: ""
> Connection: Close
> 
> <SOAP-ENV:Envelope xmlns:SOAP-
> ENV='http://schemas.xmlsoap.org/soap/envelope/' xmlns:SOAP-
> ENC='http://schemas.xmlsoap.org/soap/encoding/'
> xmlns:xsi='http://www.w3.org/1999/XMLSchema-instance'
> xmlns:xsd='http://www.w3.org/1999/XMLSchema'
> SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>
> <SOAP-ENV:Body>
> <m:sayHello xmlns:m='urn:HelloWorld'>
> <sayHello xsi:type='xsd:string'>steve</sayHello>
> </m:sayHello>
> </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>
> 
> 
> nodep_at_libero.it wrote:
> 
> >Hi Alek,
> >I modified "HelloClient.java" with y
 the source. It sends:
> >
> >POST / HTTP/1.0
> >Host: localhost
> >User-Agent: SoapRMI/1.2
> >Content-Type: text/xml; charset=utf-8
> >Content-Length: 449
> >SOAPAction: ""
> >Connection: Close
> >
> ><SOAP-ENV:Envelope xmlns:SOAP-
> >ENV='http://schemas.xmlsoap.org/soap/envelope/' xmlns:SOAP-
> >ENC='http://schemas.xmlsoap.org/soap/encoding/' 
> >xmlns:xsi='http://www.w3.org/1999/XMLSchema-instance' 
> >xmlns:xsd='http://www.w3.org/1999/XMLSchema' 
> >SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>
> >
> ><SOAP-ENV:Body>
> >
> > <m:sayHello xmlns:m='urn:HelloWorld'>
> >
> >  <box xsi:type='xsd:string'>steve</box>
> >
> > </m:sayHello>
> >
> ></SOAP-ENV:Body>
> >
> ></SOAP-ENV:Envelope>
> >
> >
> >but I've got the error:
> >
> >Client executing remote method sayHello on server with 'steve' argum
ent
> >Exception in thread "main" soaprmi.RemoteException: Envelope start t
ag 
> >expected
> >not html at line 1 and column 6 seen <html>... (parser state START_T
AG)
> >        at soaprmi.soaprpc.MethodInvoker.receiveResponse
> >(MethodInvoker.java:344)
> >
> >        at 
> >soaprmi.soaprpc.HttpSocketSoapInvocationHandler.invokeTransport
(HttpS
> >ocketSoapInvocationHandler.java:133)
> >        at soaprmi.soaprpc.SoapDynamicStub.invoke
> >(SoapDynamicStub.java:118)
> >        at $Proxy0.sayHello(Unknown Source)
> >        at minimal.HelloClient.main(HelloClient.java:75)
> >
> >Difference from Apache-soap message is:
> >
> ><m:sayHello xmlns:m='urn:HelloWorld'>
> >
> >Vs
> ><ns1:sayHello xmlns:ns1="urn:HelloWorld" SOAP-
> >ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
> >
> >but: is it very important?(the place where is "SOAP-
> >ENV:encodingStyle=....")
> >
> >Thanks!
> >
> >Stefano Pedon
> >
> >PS-In your original code you wrote "HelloClient.class" 
> >   but I've corrected with "HelloWorldServer.class": it's ok?
> >
> >
> >
> >  
> >
> >>the problem is with parameter name, Apache expects it to be "box" a
s 
>
> >><box xsi:type="xsd:string">ste</box>
> >><sayHello xsi:type='xsd:string'>steve</sayHello>
> >>
> >>
> >>use this to modify parameter name (i have not tested it but it shou
ld
> >>    
> >>
> > be 
> >  
> >
> >>OK):
> >>
> >>       XmlJavaMapping mapping = soaprmi.soap.Soap.getDefault
> >>    
> >>
> >().getMapping();
> >  
> >
> >>       mapping.setDefaultStructNsPrefix
> >>    
> >>
> >(null); // disable XSOAP auto mapping
> >  
> >
> >>       fixNames(mapping);
> >>
> >>        public static void fixNames(XmlJavaMapping mapping) throws 
> >>Exception {
> >>
> >>                XmlJavaPortTypeMap portMap = 
> >>mapping.queryPortType(HelloClient.class);
> >>
> >>                // extract mapping for operation
> >>                XmlJavaOperationMap oMap 
> >>=portMap.queryMethodRequest("sayHello");
> >>
> >>                // get in message and change part names
> >>                XmlJavaMessageMap requestMsg = oMap.getRequest();
> >>                XmlJavaPartMap[] reqParts = requestMsg.getParts();
> >>                reqParts[0].setPartName("box");
> >>
> >>                //oMap =portMap.queryMethodRequest
("anotherMethod");
> >>                // get in message and change part names
> >>                //requestMsg = oMap.getRequest();
> >>                //reqParts = requestMsg.getParts();
> >>                //reqParts[0].setPartName("parmaeter1Name");
> >>                //reqParts[1].setPartName("parameter2Namee");
> >>        }
> >>
> >>let me know if it solved the problem.
> >>
> >>thanks,
> >>
> >>alek
> >>
> >>nodep_at_libero.it wrote:
> >>
> >>    
> >>
> >>>Hi,
> >>>the code I used is in the attachment file. It's
> >>>the minimal sample for the XSOAP side and a simple
> >>>HelloWorld service for Apache-soap. First, I report
> >>>the output of Apache-Soap message when I call the service:
> >>>
> >>>POST /soap/servlet/rpcrouter HTTP/1.0
> >>>Host: localhost:8080
> >>>Content-Type: text/xml; charset=utf-8
> >>>Content-Length: 
sion='1.0' encoding='UTF-8'?>
> >>><SOAP-ENV:Envelope xmlns:SOAP-
> >>>ENV="http://schemas.xmlsoap.org/soap/envelope/" 
> >>>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
> >>>xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> >>><SOAP-ENV:Body>
> >>><ns1:sayHello xmlns:ns1="urn:HelloWorld" SOAP-
> >>>ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
> >>><box xsi:type="xsd:string">ste</box>
> >>></ns1:sayHello>
> >>></SOAP-ENV:Body>
> >>></SOAP-ENV:Envelope>
> >>>
> >>>
> >>>and the return is:
> >>>
> >>>HTTP/1.1 200 OK
> >>>Set-
Cookie: JSESSIONID=16B1353B36CD54CA2EFF3C26B77BAC75; Path=/soap
> >>>Content-Type: text/xml; charset=utf-8
> >>>Content-Length: 489
> >>>Date: Tue, 10 Dec 2002 17:59:29 GMT
> >>>Server: Apache Coyote/1.0
> >>>Connection: close
> >>>
> >>><?xml version='1.0' encoding='UTF-8'?>
> >>><SOAP-ENV:Envelope xmlns:SOAP-
> >>>ENV="http://schemas.xmlsoap.org/soap/envelope/" 
> >>>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
> >>>xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> >>><SOAP-ENV:Body>
> >>><ns1:sayHelloResponse xmlns:ns1="urn:HelloWorld" SOAP-
> >>>ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
> >>><return xsi:type="xsd:string">Hello! Welcome to SOAP,steve.</retur
n>
> >>></ns1:sayHelloResponse>
> >>>
> >>></SOAP-ENV:Body>
> >>></SOAP-ENV:Envelope>
> >>>
> >>>
> >>>Now, I've created an interface of the Apache-soap service and
> >>>placed it in the minimal sample directory and I've modified
> >>>HelloClient.java so that it shoulds to call Apache-soap's service.
> >>>The output of Xsoap is:
> >>>
> >>>POST / HTTP/1.0
> >>>Host: localhost
> >>>User-Agent: SoapRMI/1.2
> >>>Content-Type: text/xml; charset=utf-8
> >>>Content-Length: 459
> >>>SOAPAction: ""
> >>>Connection: Close
> >>>
> >>><SOAP-ENV:Envelope xmlns:SOAP-
> >>>ENV='http://schemas.xmlsoap.org/soap/envelope/' xmlns:SOAP-
> >>>ENC='http://schemas.xmlsoap.org/soap/encoding/' 
> >>>xmlns:xsi='http://www.w3.org/1999/XMLSchema-instanc
s:xsd='http://www.w3.org/1999/XMLSchema' 
> >>>SOAP-
ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>
> >>>
> >>><SOAP-ENV:Body>
> >>>
> >>><m:sayHello xmlns:m='urn:HelloWorld'>
> >>>
> >>><sayHello xsi:type='xsd:string'>steve</sayHello>
> >>>
> >>></m:sayHello>
> >>>
> >>></SOAP-ENV:Body>
> >>>
> >>></SOAP-ENV:Envelope>
> >>>
> >>>
> >>>but the result is this error:
> >>>
> >>>F:\J\xsoap\minimal>java minimal.HelloClient http://localhost:8080 
st
> >>>      
> >>>
> >eve
> >  
> >
> >>>Client executing remote method sayHello on server with 'steve' arg
um
> >>>      
> >>>
> >ent
> >  
> >
> >>>Exception in thread "main" soaprmi.RemoteException: Envelope start
 t
> >>>      
> >>>
> >ag 
> >  
> >
> >>>expected
> >>>not html at line 1 and column 6 seen <html>... (parser state START
_T
> >>>      
> >>>
> >AG)
> >  
> >
> >>>       at soaprmi.soaprpc.MethodInvoker.receiveResponse
> >>>(MethodInvoker.java:344)
> >>>
> >>>       at 
> >>>soaprmi.soaprpc.HttpSocketSoapInvocationHandler.invokeTransport
> >>>      
> >>>
> >(HttpS
> >  
> >
> >>>ocketSoapInvocationHandler.java:133)
> >>>       at soaprmi.soaprpc.SoapDynamicStub.invoke
> >>>(SoapDynamicStub.java:118)
> >>>       at $Proxy0.sayHello(Unknown Source)
> >>>       at minimal.HelloClient.main(HelloClient.java:69)
> >>>
> >>>
> >>>I see that there're differences beetwen the output's messages
> >>>but I don't know why (i.e. "<ns1:sayHello ..." and "<m:sayHello ..
."
> >>>      
> >>>
> >, 
> >  
> >
> >>>or the position
> >>>of SOAP-
> >>>      
> >>>
> >ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/")
> >  
> >
> >>>Could you help me?
> >>>Thanks!
> >>>
> >>>Stefano Pedon
> >>>
> >>>PS-I use Apache-soap v2.3.1, is it the same of Axis?
> >>>
> >>> 
> >>>
> >>>      
> >>>
> >>>>nodep_at_libero.it wrote:
> >>>>
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>Hi Alek,
> >>>>>I've to call an Apache-soap
> >>>>>     
> >>>>>
> >>>>>          
.3.1) service is running on Tomcat server,
> >>> 
> >>>
> >>>      
> >>>
> >>>>>could you tell me the basic setting, please? (In the xsoap-
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>side ... :))
> >>> 
> >>>
> >>>      
> >>>
> >>>>>Here is the "Deployed Service Information" as is in "Apache SOAP
 A
> >>>>>          
> >>>>>
> >dm
> >  
> >
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>in":
> >>> 
> >>>
> >>>      
> >>>
> >>>>>'urn:HelloWorldServer' Service Deployment Descriptor
> >>>>>Property 			Details
> >>>>>
> >>>>>ID urn:				HelloWorldServer
> >>>>>Scope 				Request
> >>>>>Provider Type 			java
> >>>>>Provider Class 		
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>	esempi.helloworld.HelloWorldServer
> >>> 
> >>>
> >>>      
> >>>
> >>>>>Use Static Class 		false
> >>>>>Methods 			sayHello
> >>>>>Type Mappings
> >>>>>Default Mapping Registry Class
> >>>>>
> >>>>>
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>hi,
> >>>>
> >>>>take a look on  on samples/interop/client/Main.java in this case
> >>>>you just need to create startpoint that points to server interfac
e
> >>>>i assume here that server HelloWorldServer implement HelloWorld
> >>>>interface that has sayHello method and is running at 
> >>>>http://localhost:8080/axis/services/hello)
> >>>>
> >>>>   HelloWorld serverReference = HelloWorld)
> >>>>           soaprmi.soaprpc.SoapServices.getDefault
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>().createStartpoint(
> >>> 
> >>>
> >>>      
> >>>
> >>>>           //server location,
> >>>>           new Class[]{HelloWorld .class},
> >>>>           "HelloWorldServer" // service namespace in case of AXI
S
> >>>>        
> >>>>
> > i
> >  
> >
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>> 
> >>>
> >>>      
> >>>
> >>>>think it is ID urn,
> >>>>           soaprmi.soap.SoapStyle.SOAP11,
> >>>>           "" // soapAction
> >>>>       );
> >>>>
> >>>>let me know if it worked OK fro you (or if 
        
> >>>>
> >mo
> >  
> >
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>re
> >>> 
> >>>
> >>>      
> >>>
> >>>>about server setup what is exactly HelloWorldServer and how AXIS 
cl
> >>>>        
> >>>>
> >ie
> >  
> >
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>nt 
> >>> 
> >>>
> >>>      
> >>>
> >>>>looks).
> >>>>
> >>>>thanks,
> >>>>
> >>>>alek
> >>>>
> >>>>-- 
> >>>>The ancestor of every action is a thought. - Ralph Waldo Emerson 
> >>>>
> >>>>
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>-- 
> >>The ancestor of every action is a thought. - Ralph Waldo Emerson 
> >>
> >>
> >>    
> >>
> 
> -- 
> The ancestor of every action is a thought. - Ralph Waldo Emerson 
> 
> 
>