Hi, I am deploying a simple WS that was developed totally by hand (i.e., all the DD were).
Works perfectly in WL, but doesn't work right in JBoss. I am using jboss-4.0.3SP1. Here is the WSDL: | | <?xml version="1.0" encoding="UTF-8"?> | <wsdl:definitions | xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" | xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" | xmlns:xsd="http://www.w3.org/2001/XMLSchema" | xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" | xmlns="http://schemas.xmlsoap.org/wsdl/" | targetNamespace="http://corexml.org/ws/HelloWorld" | xmlns:hw="http://corexml.org/ws/HelloWorld"> | | <!-- logPing messages --> | <wsdl:message name="logAccessRequest"/> | <wsdl:message name="logAccessResponse"/> | | <!-- sayHello messages --> | <wsdl:message name="greetRequest"> | <wsdl:part name="nameOfPerson" type="xsd:string"/> | </wsdl:message> | <wsdl:message name="greetResponse"> | <wsdl:part name="greeting" type="xsd:string"/> | </wsdl:message> | | <!-- Abstract method definitions of the Web Service | Protocols and bindings are not specified. --> | <wsdl:portType name="HelloWorldPortType"> | <!-- logAccess operation --> | <wsdl:operation name="logAccess"> | <wsdl:input name="request" message="hw:logAccessRequest"/> | <wsdl:output name="response" message="hw:logAccessResponse"/> | </wsdl:operation> | | <!-- greet operation --> | <wsdl:operation name="greet"> | <wsdl:input name="request" message="hw:greetRequest"/> | <wsdl:output name="response" message="hw:greetResponse"/> | </wsdl:operation> | </wsdl:portType> | | <!-- Transportation protocol and WS protocol binding to | abtract WS defined before. --> | <wsdl:binding name="HelloWorldPortBinding" type="hw:HelloWorldPortType"> | <wsdlsoap:binding | style="rpc" | transport="http://schemas.xmlsoap.org/soap/http"/> | <wsdl:operation name="logAccess"> | <wsdlsoap:operation soapAction="logAccess"/> | <wsdl:input name="request"> | <wsdlsoap:body | use="literal" | namespace="http://corexml.org/ws/HelloWorld"/> | </wsdl:input> | <wsdl:output name="response"> | <wsdlsoap:body | use="literal" | namespace="http://corexml.org/ws/HelloWorld"/> | </wsdl:output> | </wsdl:operation> | | <wsdl:operation name="greet"> | <wsdlsoap:operation soapAction="greet"/> | <wsdl:input name="request"> | <wsdlsoap:body | use="literal" | namespace="http://corexml.org/ws/HelloWorld"/> | </wsdl:input> | | <wsdl:output name="response"> | <wsdlsoap:body | use="literal" | namespace="http://corexml.org/ws/HelloWorld"/> | </wsdl:output> | </wsdl:operation> | </wsdl:binding> | | <!-- Define physical port location --> | <wsdl:service name="HelloWorldService"> | <wsdl:port name="HelloWorldPort" binding="hw:HelloWorldPortBinding"> | <wsdlsoap:address | location="http://localhost:8080/ws/HelloWorldWS"/> | </wsdl:port> | </wsdl:service> | </wsdl:definitions> | I used heavyweight jaxrpc mapping to expose operation names that are different from the actual method names in the SEI. I am using the JSE way, not EJB. Here is the jaxrpc mapping file: | <?xml version="1.0" encoding="UTF-8" ?> | <java-wsdl-mapping version="1.1" | xmlns="http://java.sun.com/xml/ns/j2ee" | xmlns:hw="http://corexml.org/ws/HelloWorld" | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | xsi:schemaLocation=" | http://java.sun.com/xml/ns/j2ee | http://www.ibm.com/webservices/xsd/j2ee_jaxrpc_mapping_1_1.xsd"> | <package-mapping> | <package-type>corexml.ws.impl.generated</package-type> | <namespaceURI>http://corexml.org/ws/HelloWorld</namespaceURI> | </package-mapping> | <service-interface-mapping> | <service-interface> | corexml.ws.impl.generated.HelloWorldService | </service-interface> | <wsdl-service-name>hw:HelloWorldService</wsdl-service-name> | </service-interface-mapping> | <service-endpoint-interface-mapping> | <service-endpoint-interface> | corexml.ws.endpoint.HelloWorldEndpoint | </service-endpoint-interface> | <wsdl-port-type>hw:HelloWorldPortType</wsdl-port-type> | <wsdl-binding>hw:HelloWorldPortBinding</wsdl-binding> | <service-endpoint-method-mapping> | <java-method-name>logPing</java-method-name> | <!-- Note: no namespace as operation is already part of | hw:HelloWorldPortType, so no namespace is needed. --> | <wsdl-operation>logAccess</wsdl-operation> | <wsdl-return-value-mapping> | <method-return-value>void</method-return-value> | <wsdl-message>hw:logAccessResponse</wsdl-message> | </wsdl-return-value-mapping> | </service-endpoint-method-mapping> | <service-endpoint-method-mapping> | <java-method-name>sayHello</java-method-name> | <wsdl-operation>greet</wsdl-operation> | <method-param-parts-mapping> | <param-position>0</param-position> | <param-type>java.lang.String</param-type> | <wsdl-message-mapping> | <wsdl-message>hw:greetRequest</wsdl-message> | <wsdl-message-part-name>nameOfPerson</wsdl-message-part-name> | <parameter-mode>IN</parameter-mode> | </wsdl-message-mapping> | </method-param-parts-mapping> | <wsdl-return-value-mapping> | <method-return-value>java.lang.String</method-return-value> | <wsdl-message>hw:greetResponse</wsdl-message> | </wsdl-return-value-mapping> | </service-endpoint-method-mapping> | </service-endpoint-interface-mapping> | </java-wsdl-mapping> | Like I said, WebLogic works just fine and the clients are able to communicate with the WS properly. However, in JBoss, I get an exception with the following message: anonymous wrote : | java.rmi.RemoteException: Runtime exception; nested exception is: | unexpected element name: expected={http://corexml.org/ws/HelloWorld}logAccessResponse, actual={http://corexml.org/ws/HelloWorld}logPingResponse | at com.sun.xml.rpc.client.StreamingSender._handleRuntimeExceptionInSend(StreamingSender.java:331) | at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:313) | at corexml.ws.client.generated.HelloWorldPortType_Stub.logAccess(HelloWorldPortType_Stub.java:119) | at corexml.ws.client.HelloWorldWSClient.main(HelloWorldWSClient.java:28) | Caused by: unexpected element name: expected={http://corexml.org/ws/HelloWorld}logAccessResponse, actual={http://corexml.org/ws/HelloWorld}logPingResponse | at com.sun.xml.rpc.encoding.literal.LiteralObjectSerializerBase.internalDeserialize(LiteralObjectSerializerBase.java:196) | at com.sun.xml.rpc.encoding.literal.LiteralObjectSerializerBase.deserialize(LiteralObjectSerializerBase.java:124) | at corexml.ws.client.generated.HelloWorldPortType_Stub._deserialize_logAccess(HelloWorldPortType_Stub.java:184) | at corexml.ws.client.generated.HelloWorldPortType_Stub._readFirstBodyElement(HelloWorldPortType_Stub.java:157) | at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:228) | ... 2 more | The message "logPingResponse" is what I had there originally when the name of the method in the SEI matched 100% with the name of the operation in the WSDL. Once I changed the operation name, I changed all the message names to match, i.e. logPing/logPingResponse changed to logAccess/logAccessResponse to be consistent. When examining the SOAP output, here is what I see: Service Request (using a client generated stubs of the updated WSDL with new names for the operations): anonymous wrote : | <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> | | <soapenv:Body> | <target:logAccess xmlns:target="http://corexml.org/ws/HelloWorld" /> | </soapenv:Body> | </soapenv:Envelope> | Service Response anonymous wrote : | <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:logPingResponse xmlns:ns1="http://corexml.org/ws/HelloWorld" /> | </soapenv:Body> | </soapenv:Envelope> | Why is JBoss still saying "logPingResponse"? The request is obviously seeing the new WSDL. The WSDL wasn't manually copied from JBoss deployment, but gotten through a URL, so I am sure it's the latest version of it (as the request SOAP message indicates, i.e., uses logAccess, not logPing). So, is this a JBoss bug or did I mess up and WebLogic is just being forgiving? Thanks, Yaakov. View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3935235#3935235 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3935235 ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ JBoss-user mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/jboss-user
