Unable to set partName property for JSR181 annotations
------------------------------------------------------
Key: XFIRE-856
URL: http://jira.codehaus.org/browse/XFIRE-856
Project: XFire
Issue Type: Bug
Components: JAX-WS, JAXB 2.0
Affects Versions: 1.2.4
Environment: Windows XP Professional, Netbeans 5.0, Bea Weblogic 9.2
Reporter: Matthew Eanor
Assigned To: Dan Diephouse
Priority: Critical
I am currently using xfire 1.2.4 with JAXB 2.0 and the annotations introduced
in JSR 181 for creating a web service.
I have experienced difficulty setting the partName property for the WebResult
and WebParam annotations and hoped to get some feedback as to whether this is
known behaviour or whether there are any additional steps that I need to take
to allow this behaviour.
According to JSR 181, the partName can be used if the operation is rpc style or
if the operation is document style and the parameter style is BARE. I have
included the code for the service below which should be using document style
and BARE, as set in the SOAPBinding annotation. However, the partName property
is ommited from the generated wsdl (also below).
This particular issue has been noticed using both
org.codehaus.xfire.jaxb2.JaxbServiceFactory and
org.codehaus.xfire.jaxws.JAXWSServiceFactory. Interestingly, the
org.codehaus.xfire.jaxb2.JaxbServiceFactory sets the part name in the wsdl to
'return', whereas the org.codehaus.xfire.jaxws.JAXWSServiceFactory sets the
part name to 'parameters'. This occurs irrespective of what is specified in the
WebResult and WebParam annotations.
We currently need the functionality offered by the JaxbServiceFactory and are
unable to move forward without the ability to set the partName, or have the
partName default to 'paramters' as is the case with the
org.codehaus.xfire.jaxws.JAXWSServiceFactory.
Any information
Services.xml
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<serviceClass>matt.test.MyServiceImpl</serviceClass>
<serviceFactory>org.codehaus.xfire.jaxb2.JaxbServiceFactory</serviceFactory>
</service>
</beans>
MyServiceImpl.java
package matt.test;
import java.util.Collections;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebResult;
import javax.jws.soap.SOAPBinding;
import java.util.*;
@WebService(name="Hello", serviceName="HelloService",
targetNamespace="http://example.com")
@SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE,
style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL)
public class MyServiceImpl {
public MyServiceImpl() {
}
@WebMethod
@WebResult(partName="parameters")
public String hello(@WebParam(partName="parameters") String input) {
return "Hello " + input;
}
}
http://127.0.0.1:7001/TestApp2/services/HelloService?wsdl
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://example.com"
xmlns:tns="http://example.com"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding"
xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="qualified" elementFormDefault="qualified"
targetNamespace="http://example.com">
<xsd:element name="input" type="xsd:string"/>
<xsd:element name="return" type="xsd:string"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="helloRequest">
<wsdl:part name="input" element="tns:input">
</wsdl:part>
</wsdl:message>
<wsdl:message name="helloResponse">
<wsdl:part name="return" element="tns:return">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="Hello">
<wsdl:operation name="hello">
<wsdl:input name="helloRequest" message="tns:helloRequest">
</wsdl:input>
<wsdl:output name="helloResponse" message="tns:helloResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="HelloServiceHttpBinding" type="tns:Hello">
<wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="hello">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="helloRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="helloResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="HelloService">
<wsdl:port name="HelloServiceHttpPort"
binding="tns:HelloServiceHttpBinding">
<wsdlsoap:address
location="http://127.0.0.1:7001/TestApp2/services/HelloService"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list please visit:
http://xircles.codehaus.org/manage_email