You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Daniel Kulp (JIRA)" <ji...@apache.org> on 2012/12/21 16:45:13 UTC
[jira] [Resolved] (CXF-4713) Method inherited from super interface
can not be part of operations in wsdl
[ https://issues.apache.org/jira/browse/CXF-4713?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Kulp resolved CXF-4713.
------------------------------
Resolution: Fixed
Fix Version/s: 2.7.2
2.6.5
Assignee: Daniel Kulp
> Method inherited from super interface can not be part of operations in wsdl
> ----------------------------------------------------------------------------
>
> Key: CXF-4713
> URL: https://issues.apache.org/jira/browse/CXF-4713
> Project: CXF
> Issue Type: Bug
> Components: JAX-WS Runtime
> Affects Versions: 2.6
> Reporter: iris ding
> Assignee: Daniel Kulp
> Fix For: 2.6.5, 2.7.2
>
> Attachments: cxf-4713.patch
>
>
> I want to expose some existed class as webservice use below logic:
> 1. Define the SEI as below:
> @javax.jws.WebService
> public interface AddNumbersInterface extends IrisSuperInterface{
> }
> 2. Define the implementation as below:
> @javax.jws.WebService (serviceName="AddNumbers")
> public class AddNumbers extends AddNumbersBusiness implements AddNumbersInterface{
> }
> 3. Below the original business logic class:
> public class AddNumbersBusiness implements IrisSuperInterface{
> public String addNumbers(int arg0, int arg1) throws AddNumbersException {
> if(arg0 + arg1 <0){
> throw new AddNumbersException("Sum is less than 0.");
> }
> return "Result = " + String.valueOf(arg0 + arg1);
> }
> public String addNegatives(int arg0, int arg1) throws AddNegativesException {
> // expect 2 negative numbers
> if(arg0>0 || arg1>0){
> throw new AddNegativesException("Expected all negative numbers.");
> }
> return "Result = " + String.valueOf(arg0 + arg1);
> }
> public String useAnno(int arg0, int arg1) throws AnnoException {
> if(arg0 + arg1 <0){
> throw new AnnoException("userAnno: Sum is less than 0.");
> }
> return "Result = " + String.valueOf(arg0 + arg1);
> }
> }
> 4. Below is the original business interface:
> public interface IrisSuperInterface {
> public String addNumbers(int arg0, int arg1) throws AddNumbersException;
> public String addNegatives(int arg0, int arg1) throws AddNegativesException;
> public String useAnno(int arg0, int arg1) throws AnnoException;
> }
> Now if I deploy below ear into server and the generated wsdl is like below:
> <wsdl:definitions name="AddNumbers" targetNamespace="xxxxxxxx">
> <wsdl:portType name="AddNumbersInterface">
> </wsdl:portType>
> <wsdl:binding name="AddNumbersSoapBinding" type="tns:AddNumbersInterface"><soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
> </wsdl:binding>
> <wsdl:service name="AddNumbers">
> <wsdl:port binding="tns:AddNumbersSoapBinding" name="AddNumbersPort"><soap:address location="http://xxxxxxxxxx/AddNumbers"/></wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
> The portType part is empty. I have a look into CXF and found :org.apache.cxf.jaxws.support.JaxWsServiceConfiguration.isWebMethod(Method)
> will check whether the super interface has @webservice annotation defined. so in our case it fails.
> According to :
> 3.4.1 Inheritance
> WSDL 1.1 does not define a standard representation for the inheritance of wsdl:portType elements.
> When mapping an SEI that inherits from another interface, the SEI is treated as if all methods of the inherited
> interface were defined within the SEI.
> we should not check the @webservice annotation in SEI's super interface.
> I propsed to add below lines into org.apache.cxf.jaxws.support.JaxWsServiceConfiguration.isWebMethod(Method), do you have any comments for it?
> Class<?> cls = method.getDeclaringClass();
> if (cls.isInterface() && ( cls.isAssignableFrom(implInfo.getImplementorClass()) || cls.isAssignableFrom(implInfo.getSEIClass()))) {
> return Boolean.TRUE;
> }
> Thanks a lot!
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira