You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Wicus Ross (JIRA)" <ji...@apache.org> on 2008/05/22 13:37:56 UTC
[jira] Updated: (AXIS2-3723) AXIS2 is not aware of "is" methods
when generating soap messages from JAXB java beans
[ https://issues.apache.org/jira/browse/AXIS2-3723?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Wicus Ross updated AXIS2-3723:
------------------------------
Attachment: 20080522_00.diff
We have tracked down the cause relating to the reported issue. It would seem that JAXB is not following the JavaBean specification. The following link, http://www.mojavelinux.com/blog/archives/2006/09/the_great_jaxb_api_blunder/, describes our situation. From the aforementioned URL you can follow https://jaxb.dev.java.net/issues/show_bug.cgi?id=131 for more details.
We will start in module ADB, which is the closest to the issue. Specifically method org.apache.axis2.databinding.utils.BeanUtil.getPullParser(...) +-line 128. The line reads as follows: BeanInfo beanInfo = Introspector.getBeanInfo(beanObject.getClass()); If you debug from here you will eventually hit the point of interest, java.beans.Introspector.getTargetProperty(...). Lines 537 through 567 (JDK6_04) is the focus point. Evidently the PropertyDescriptor (pd) readMethod (isXxx) will not be set if the resultType is of type java.lang.Boolean (lines 549 - 552, JDK6_04).
To address the issue we made a small modification to method org.apache.axis2.databinding.utils.BeanUtil.getPullParser(...). Please find attached diff (20080522_00.diff).
> AXIS2 is not aware of "is" methods when generating soap messages from JAXB java beans
> -------------------------------------------------------------------------------------
>
> Key: AXIS2-3723
> URL: https://issues.apache.org/jira/browse/AXIS2-3723
> Project: Axis 2.0 (Axis2)
> Issue Type: Bug
> Components: databinding
> Affects Versions: nightly
> Environment: Win XP Pro, JDK 6_04, Tomcat 5.5.26, JAXB 2.1.6
> Reporter: Glen Verran
> Priority: Blocker
> Fix For: nightly
>
> Attachments: 20080522_00.diff
>
>
> I have an XSD which contains an element of type xs:boolean. This element is called "redirect". I use JAXB 2.1.6 to generate the java beans from the XSD.
> The methods for the "redirect" variable in the java bean are isRedirect and setRedirect.
> I created a web service with the method below:
> public RetrieveConfigurationDataResponse retrieveConfigurationData(RetrieveConfigurationDataRequest req) {
> RetrieveConfigurationDataResponse rsp = new RetrieveConfigurationDataResponse();
> rsp.setData("1234");
> rsp.setDataEncodingType(req.getDataEncodingType());
> rsp.setEchoData(req.getEchoData());
> rsp.setIdentifier(req.getIdentifier());
> rsp.setIdentifierType(req.getIdentifierType());
> rsp.setRedirect(Boolean.FALSE);
> rsp.setResponseCode("00");
> rsp.setRevision(req.getRevision());
> return rsp;
> }
> Both the (RetrieveConfigurationDataRequest and RetrieveConfigurationDataResponse are JAXB generated java beans. The RetrieveConfigurationDataResponse class is the one that contains this redirect variable. I generated the client code and went on to test this method to the web service.
> I got the following AxisFault saying that it could not find the read method for "redirect".
> Exception in thread "main" org.apache.axis2.AxisFault: org.apache.axis2.AxisFault: can not find read method for : redirect
> at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:486)
> at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:343)
> at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389)
> at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)
> at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
> at com.traderoot.webservices.configurationdistribwebservice.ConfigurationDistribWebServiceStub.retrieveConfigurationData(ConfigurationDistribWebServiceStub.java:172)
> at Test.main(Test.java:23)
> To confirm my assumptions, I went into the JAXB code and changed the isRedirect method to getRedirect. This fault did not occure.
> I do not consider this a workaround since JAXB classes are to be untouched. It seems that AXIS2 is not looking for "is" methods when binding the java bean.
> This is an absoluate blocker and prevents us from being able to use AXIS2.
--
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: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org