[ https://issues.apache.org/jira/browse/AXIS2-4822?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Rich Scheuerle resolved AXIS2-4822. ----------------------------------- Resolution: Fixed The actual root cause of this problem is the MarshalServiceRuntimeDescription object was not being updated when a new OperationDescription is added to the ServiceDescription. This is now corrected. > '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 > Assignee: Rich Scheuerle > Original Estimate: 48h > Remaining Estimate: 48h > > '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