'equals ' and 'hashCode ' method is missing in 
org.apache.axis2.jaxws.description.impl.FaultDescriptionImpl.class 
------------------------------------------------------------------------------------------------------------------

                 Key: AXIS2-4822
                 URL: https://issues.apache.org/jira/browse/AXIS2-4822
             Project: Axis2
          Issue Type: Bug
          Components: jaxws
    Affects Versions: 1.5.1
         Environment: websphere 6.1.23 unix
            Reporter: Maryna Zilske


'equals ' and 'hashCode ' method is missing in 
org.apache.axis2.jaxws.description.impl.FaultDescriptionImpl.class 

The class org.apache.axis2.jaxws.description.impl. 
OperationDescriptionImpl.class has an attribute 'faultDescriptions'. This 
attribute is an ArrayList of 
org.apache.axis2.jaxws.description.impl.FaultDescriptionImpl- objects.


The class 
org.apache.axis2.jaxws.runtime.description.marshal.impl.MarshalServiceRuntimeDescriptionImpl
  has an attribute 'faultBeanDescMap'. This attribute is a HashMap  contended:

key value a org.apache.axis2.jaxws.description.impl.FaultDescriptionImpl
value object an instance of 
org.apache.axis2.jaxws.runtime.description.marshal.impl.FaultBeanDescImpl.class

We have a productive runtime NullPointerEception in  
org.apache.axis2.jaxws.marshaller.impl.alt MethodMarshallerUtils in the method 
demarshalFaultResponse on line 

QName tryName = new (faultBeansDesc.getFaultBeanNameSpase ...

because faultBeansDesc is null: 


Caused by: javax.xml.ws.WebServiceException: java.lang.NullPointerException
        at 
org.apache.axis2.jaxws.ExceptionFactory.createWebServiceException(ExceptionFactory.java:180)
        at 
org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:79)
        at 
org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:134)
        at 
org.apache.axis2.jaxws.marshaller.impl.alt.DocLitBareMethodMarshaller.demarshalFaultResponse(DocLitBareMethodMarshaller.java:372)
        at 
org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.getFaultResponse(JAXWSProxyHandler.java:400)
        at 
org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.createResponse(JAXWSProxyHandler.java:373)
        at 
org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invokeSEIMethod(JAXWSProxyHandler.java:294)
        at 
org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invoke(JAXWSProxyHandler.java:147)
        at $Proxy30.ermittelnHilfsmittelVertraege(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor938.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at 
org.springframework.remoting.jaxws.JaxWsPortClientInterceptor.doInvoke(JaxWsPortClientInterceptor.java:416)
        at 
org.springframework.remoting.jaxws.JaxWsPortClientInterceptor.doInvoke(JaxWsPortClientInterceptor.java:392)
        ... 40 more
Caused by: java.lang.NullPointerException
        at 
org.apache.axis2.jaxws.marshaller.impl.alt.MethodMarshallerUtils.demarshalFaultResponse(MethodMarshallerUtils.java:887)
        at 
org.apache.axis2.jaxws.marshaller.impl.alt.DocLitBareMethodMarshaller.demarshalFaultResponse(DocLitBareMethodMarshaller.java:366)
        ... 50 more

I switched the log level on axis2.jaxws and see:

[14.09.10 08:18:51:002 CEST] 0000001e DescriptionFa 1 
org.apache.axis2.jaxws.description.impl.DescriptionFactoryImpl 
createServiceDescription Cache Map = 
{org.apache.axis2.jaxws.description.description...@b1873327=org.apache.axis2.jaxws.description.impl.servicedescriptionimpl@14881488
ServiceQName: {http://de/}HelloImplService
isWSDLSpecified: true; WSDL Location: file:./WEB-INF/wsdl/HelloImplService.wsdl
WSDL Definition available: true; Generated WSDL Definition available: false
Number of ports: 1
Port QNames: {http://de/}HelloImplPort; 
Number of EndpointDescrptions: 1
org.apache.axis2.jaxws.description.impl.endpointdescriptioni...@203c203c
Name: HelloImpl; Endpoint Address: 
http://127.0.0.1:9080/FaultTest/HelloImplService
ServiceQName: {http://de/}HelloImplService; PortQName: 
{http://de/}HelloImplPort; TargetNamespace: http://de/
Service Mode: null; Binding Type: http://schemas.xmlsoap.org/wsdl/soap/http; 
Client Binding Type: http://schemas.xmlsoap.org/wsdl/soap/http
Is provider-based: false; Is proxy-based: true; Is WSDL fully specified: true
AxisService: org.apache.axis2.description.axisserv...@5480548
EndpointInterfaceDescription: 
org.apache.axis2.jaxws.description.impl.endpointinterfacedescriptioni...@26a026a
Name: HelloImpl; PortType: {http://de/}HelloImpl
SOAP Style: DOCUMENT; SOAP Use: LITERAL; SOAP Paramater Style: WRAPPED
Number of operations: 1
Operation: 
org.apache.axis2.jaxws.description.impl.operationdescriptioni...@2d802d8
Name: sayHelloWorld; Operation Name: sayHelloWorld; Action: 
Operation excluded: false; Is oneway: false; Is returning result: true; Is 
result header: false; Is JAXWS Client Async method: false
SOAP Style: DOCUMENT; SOAP Use: LITERAL; SOAP Paramater Style: WRAPPED
Result name: return; Result part name: return; Result type: class 
java.lang.String; Result actual type: class java.lang.String
Request Wrapper class: de.SayHelloWorld; Response Wrapper class: 
de.SayHelloWorldResponse
Java declaring class name: de.HelloImpl
Java method name: sayHelloWorld
Java paramaters: [Ljava.lang.String;@44e844e8
Service Implementation method: null
Axis Operation: org.apache.axis2.description.outinaxisoperat...@3ece3ece
Number of Parameter Descriptions: 1
Parameter Description: 
org.apache.axis2.jaxws.description.impl.parameterdescriptioni...@13b813b8
Name: arg0
Is header: false; Is holder: false
Mode: IN
Type: class java.lang.String; Actual type: class java.lang.String
Number of Fault Descriptions: 1
Fault Description: 
org.apache.axis2.jaxws.description.impl.faultdescriptioni...@5f345f34
Exception class: de.WebServiceFaultException_Exception
Name: WebServiceFault
Namespace: WebServiceFault
FaultBean: de.WebServiceFaultException
FaultInfo Type Name  : de.WebServiceFaultException
No Attachment Descriptions
RuntimeDescriptions:0

RuntimeDescriptions:1

  MarshalServiceRuntime:JAXWS-MARSHAL
    Packages = [de]
    AnnotationDesc cached for:de.SayHelloWorld
      @XMLRootElement exists = false
    AnnotationDesc cached for:de.WebServiceFaultException
      @XMLRootElement exists = false
    AnnotationDesc cached for:java.lang.String
      @XMLRootElement exists = false
    AnnotationDesc cached for:de.SayHelloWorldResponse
      @XMLRootElement exists = false
    PropertyDescriptorPlus Map cached for:de.SayHelloWorldResponse
      propertyName   =return
        xmlName      =return
        propertyType =java.lang.String

    PropertyDescriptorPlus Map cached for:de.SayHelloWorld
      propertyName   =arg0
        xmlName      =arg0
        propertyType =java.lang.String
    RequestWrappers
    Operation:sayHelloWorld RequestWrapper:de.SayHelloWorld    ResponseWrappers
    Operation:sayHelloWorld ResponseWrapper:de.SayHelloWorldResponse    
FaultBeanDesc
    FaultException:de.WebServiceFaultException_Exception

      FaultBean Class Name :de.WebServiceFaultException
      FaultBean Namespace  :http://de/
      FaultBean Local Name :WebServiceFault

}

The out- and in- messages are correct. If no 

RuntimeDescriptions:1

  MarshalServiceRuntime:JAXWS-MARSHAL
....

in log file is available, the program runs correct. So the failure is only on 
runtime description fragment.
Actually code in MethodMarshallerUtils  musts fail, because:
 
        FaultDescription fd = operationDesc.getFaultDescriptions()[i];
// gives an instance of FaultDescriptionImpl from ArrayList
        FaultBeanDesc faultBeanDesc = marshalDesc.getFaultBeanDesc(fd);
// search for instance in another HashMap and a key value for search hasn't 
equals method,
// the next code trays to operate with NULL object:
        QName tryQName = new QName(faultBeanDesc.getFaultBeanNamespace(), ... 

Please, consider to correct this bug.
Our solution for production environment is to redefine the interface. There are 
only request and response messages and no fault any more. It is not pretty.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscr...@axis.apache.org
For additional commands, e-mail: java-dev-h...@axis.apache.org

Reply via email to