Hello all. I've been stuck on this problem for 3 days now and it is driving me crazy. I originally had just one web method exposed as a web service and everything worked fine. I added an additional method and while the first operation still works... the second one throws a "Endpoint does not contain operation metadata" exception when it gets called.
This is running on jboss-4.2.0.GA with jbossws 1.2.1 GA. WSDL: | <?xml version="1.0" encoding="UTF-8"?> | | <wsdl:definitions name="XmlApiMethods" targetNamespace="xmlapi_1.0" | xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" | xmlns:tns="xmlapi_1.0" | xmlns="http://schemas.xmlsoap.org/wsdl/" | xmlns:xsd="http://www.w3.org/2001/XMLSchema" | xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> | | <wsdl:types> | <xsd:schema targetNamespace="xmlapi_1.0" | elementFormDefault="qualified" | xmlns:xsd="http://www.w3.org/2001/XMLSchema"> | <xsd:element name="find" type="tns:find_t" /> | <xsd:element name="findResponse" type="tns:findResponse_t" /> | <xsd:complexType name="find_t"> | <xsd:sequence> | <xsd:element name="fullClassName" type="xsd:string" minOccurs="1" /> | <xsd:element name="filter" type="xsd:string" minOccurs="1" /> | <xsd:element name="resultFilter" type="xsd:string" minOccurs="0" /> | </xsd:sequence> | </xsd:complexType> | | <xsd:complexType name="findResponse_t"> | <xsd:sequence> | <xsd:element name="result" type="xsd:string" minOccurs="1" /> | </xsd:sequence> | </xsd:complexType> | | <xsd:element name="ping" type="tns:ping_t" /> | <xsd:element name="pingResponse" type="tns:pingResponse_t" /> | | <xsd:complexType name="ping_t"> | <xsd:sequence/> | </xsd:complexType> | | <xsd:complexType name="pingResponse_t"> | <xsd:sequence/> | </xsd:complexType> | </xsd:schema> | </wsdl:types> | | <wsdl:message name="FindInterface_find"> | <wsdl:part name="parameters" element="tns:find" /> | </wsdl:message> | <wsdl:message name="FindInterface_findResponse"> | <wsdl:part name="result" element="tns:findResponse" /> | </wsdl:message> | | <wsdl:message name="FindInterface_ping"> | <wsdl:part name="parameters" element="tns:ping" /> | </wsdl:message> | <wsdl:message name="FindInterface_pingResponse"> | <wsdl:part name="result" element="tns:pingResponse" /> | </wsdl:message> | | <wsdl:portType name="FindInterface"> | <wsdl:operation name="find"> | <wsdl:input message="tns:FindInterface_find" /> | <wsdl:output message="tns:FindInterface_findResponse" /> | </wsdl:operation> | | <wsdl:operation name="ping"> | <wsdl:input message="tns:FindInterface_ping" /> | <wsdl:output message="tns:FindInterface_pingResponse" /> | </wsdl:operation> | </wsdl:portType> | | <wsdl:binding name="FindInterfaceBinding" | type="tns:FindInterface"> | <soap:binding transport="http://schemas.xmlsoap.org/soap/http" | style="document" /> | <wsdl:operation name="find"> | <soap:operation soapAction="" /> | <wsdl:input> | <soap:body use="literal" /> | </wsdl:input> | <wsdl:output> | <soap:body use="literal" /> | </wsdl:output> | </wsdl:operation> | | <wsdl:operation name="ping"> | <soap:operation soapAction="" /> | <wsdl:input> | <soap:body use="literal" /> | </wsdl:input> | <wsdl:output> | <soap:body use="literal" /> | </wsdl:output> | </wsdl:operation> | </wsdl:binding> | | <wsdl:service name="XmlApiMethods"> | <wsdl:port name="FindInterfacePort" | binding="tns:FindInterfaceBinding"> | <soap:address location="REPLACE_WITH_ACTUAL_URL" /> | </wsdl:port> | </wsdl:service> | </wsdl:definitions> | Interface: | | package webservice; | | import javax.jws.WebMethod; | import javax.jws.WebParam; | import javax.jws.WebResult; | import javax.jws.WebService; | import javax.xml.ws.RequestWrapper; | import javax.xml.ws.ResponseWrapper; | | @WebService(name = "FindInterface", targetNamespace = "xmlapi_1.0") | //@XmlSeeAlso({ | // ObjectFactory.class | //}) | public interface FindInterface { | | | /** | * | * @param filter | * @param fullClassName | * @param resultFilter | * @return | * returns java.lang.String | */ | @WebMethod | @WebResult(name = "result", targetNamespace = "xmlapi_1.0") | @RequestWrapper(localName = "find", targetNamespace = "xmlapi_1.0", className = "webservice.FindT") | @ResponseWrapper(localName = "findResponse", targetNamespace = "xmlapi_1.0", className = "webservice.FindResponseT") | public String find( | @WebParam(name = "fullClassName", targetNamespace = "xmlapi_1.0") | String fullClassName, | @WebParam(name = "filter", targetNamespace = "xmlapi_1.0") | String filter, | @WebParam(name = "resultFilter", targetNamespace = "xmlapi_1.0") | String resultFilter); | | /** | * | */ | @WebMethod | @RequestWrapper(localName = "ping", targetNamespace = "xmlapi_1.0", className = "webservice.PingT") | @ResponseWrapper(localName = "pingResponse", targetNamespace = "xmlapi_1.0", className = "webservice.PingResponseT") | public void ping(); | | } | Implementation snippet: | package webservice; | | @WebService(name = "FindInterface", serviceName = "XmlApiMethods", | portName = "FindInterfacePort", | targetNamespace = "xmlapi_1.0", | wsdlLocation = "META-INF/wsdl/XmlApiMethods.wsdl" , | endpointInterface = "webservice.FindInterface") | | public class FindImpl implements FindInterface { ... | Bit of code that generates the ping request (raw request). This is what currently fails. The client uses something very similar and cannot be changed: | public static String getPingRequest(String user, String password, String clientId) { | return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + | "<SOAP:Envelope "+ | "xmlns:SOAP=\"http://schemas.xmlsoap.org/soap/envelope/\" " + | "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" + | "<SOAP:Header><header xmlns=\"xmlapi_1.0\">" + | "<security><user>" + user + | "</user><password>"+ password + | "</password></security><requestID>"+clientId+"</requestID>"+ | "</header></SOAP:Header>"+ | "<SOAP:Body><ping xmlns=\"xmlapi_1.0\"/></SOAP:Body></SOAP:Envelope>"; | } | The find bit of code that currently works: | public static String getSoapRequest(String user, String password, String clientId, | String root) { | return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + | "<SOAP:Envelope "+ | "xmlns:SOAP=\"http://schemas.xmlsoap.org/soap/envelope/\" "+ | "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n"+ | "<SOAP:Header><header xmlns=\"xmlapi_1.0\">\n"+ | "<security><user>" + user + | "</user><password>"+ password + | "</password></security><requestID>"+clientId+"</requestID>\n"+ | "</header></SOAP:Header>"+ | "<SOAP:Body><find xmlns=\"xmlapi_1.0\">"+ | "<fullClassName>"+root+"</fullClassName>"+ | "<filter/>"+ | "<resultFilter><children/></resultFilter>"+ | "</find></SOAP:Body></SOAP:Envelope>"; | } | I have read about operations that take no parameters having issues when using "wrapped" document/literal style. Is this the problem? I have tried so many different permutations of WSDL, java code, etc. that I am out of ideas. Any suggestions or pointers would be appreciated. This seems to be a somewhat common issue on this forum but none of the other examples seem to be the cause here and this one involves an empty "wrapped" operation. View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4062747#4062747 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4062747 _______________________________________________ jboss-user mailing list [email protected] https://lists.jboss.org/mailman/listinfo/jboss-user
