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 ax...@ws.apache.org on 2004/07/30 17:40:40 UTC
[jira] Updated: (AXIS-1482) BeanSerializer not working for complex (nested) beans
The following issue has been updated:
Updater: Hongman Kim (mailto:kimhm@vt.edu)
Date: Fri, 30 Jul 2004 8:39 AM
Changes:
Attachment changed to beanxml.zip
---------------------------------------------------------------------
For a full history of the issue, see:
http://issues.apache.org/jira/browse/AXIS-1482?page=history
---------------------------------------------------------------------
View the issue:
http://issues.apache.org/jira/browse/AXIS-1482
Here is an overview of the issue:
---------------------------------------------------------------------
Key: AXIS-1482
Summary: BeanSerializer not working for complex (nested) beans
Type: Bug
Status: Unassigned
Priority: Major
Project: Axis
Components:
Serialization/Deserialization
Versions:
1.2 Beta
Assignee:
Reporter: Hongman Kim
Created: Fri, 30 Jul 2004 8:36 AM
Updated: Fri, 30 Jul 2004 8:39 AM
Environment: Windows XP, j2sdk1.4.2_05, Tomcat 5
Description:
BeanSerializer gives Exception for complex (nested) beans. This happens for 1.2beta and also for nightly build of July 30 2004.
Below codes works OK for 1.1.
-- First Bean
/*
* Run.java
*
* Created on July 28, 2004, 4:11 PM
*/
package beanxml;
/**
*
* @author hkim
*/
public class Run {
private String runID = null;
/** Creates a new instance of Run */
public Run() {
}
public void setRunID(String runID)
{
this.runID = runID;
}
public String getRunID()
{
return runID;
}
public String toString()
{
String str = "";
str = str + runID + ":";
// for (int i=0; i < vars.length; i++)
// str = str + vars[i] +";";
return str;
}
}
--- Second Bean
/*
* RunMatrix.java
*
* Created on July 28, 2004, 4:20 PM
*/
package beanxml;
/**
*
* @author hkim
*/
public class RunMatrix {
private Run run;
private Integer tsID;
/** Creates a new instance of RunMatrix */
public RunMatrix() {
}
public void setRun(Run run)
{
this.run = run;
}
public Run getRun()
{
return run;
}
public Integer getTsID()
{
return tsID;
}
public void setTsID(Integer tsID)
{
this.tsID = tsID;
}
public String toString()
{
String str = "";
str = str + tsID + ":";
str = str + run.toString();
return str;
}
}
--- Service
/*
* Server.java
*
* Created on July 28, 2004, 4:31 PM
*/
package beanxml;
/**
*
* @author hkim
*/
public class MatrixBeanService {
/** Creates a new instance of Server */
public MatrixBeanService() {
}
public String getMatrixString(RunMatrix matrix)
{
String sep = System.getProperty("line.separator");
String response = matrix.toString() + sep;
return response;
}
}
--- Client
/*
* Client.java
*
* Created on July 28, 2004, 4:39 PM
*/
package beanxml;
import org.apache.axis.AxisFault;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.utils.Options;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
/**
*
* @author hkim
*/
public class Client {
/** Creates a new instance of Client */
public Client() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try
{
Options options = new Options(args);
Run run = new Run();
run.setRunID("77");
RunMatrix matrix = new RunMatrix();
matrix.setRun(run);
matrix.setTsID(new Integer(55));
Service service = new Service();
Call call = (Call) service.createCall();
QName qn1 = new QName( "urn:MatrixBeanService", "RunMatrix" );
QName qn2 = new QName( "urn:MatrixBeanService", "Run" );
call.registerTypeMapping(beanxml.RunMatrix.class, qn1,
new org.apache.axis.encoding.ser.BeanSerializerFactory(beanxml.RunMatrix.class, qn1),
new org.apache.axis.encoding.ser.BeanDeserializerFactory(beanxml.RunMatrix.class, qn1));
call.registerTypeMapping(beanxml.Run.class, qn2,
new org.apache.axis.encoding.ser.BeanSerializerFactory(beanxml.Run.class, qn2),
new org.apache.axis.encoding.ser.BeanDeserializerFactory(beanxml.Run.class, qn2));
String result;
try {
System.out.println("url = " + options.getURL());
call.setTargetEndpointAddress( new java.net.URL(options.getURL()) );
call.setOperationName( new QName("PrintRunMatrix", "getMatrixString") );
call.addParameter( "arg1", qn1, ParameterMode.IN );
call.setReturnType( org.apache.axis.encoding.XMLType.XSD_STRING );
result = (String) call.invoke( new Object[] { matrix } );
} catch (AxisFault fault) {
fault.printStackTrace();
result = "Error : " + fault.toString();
}
System.out.println(result);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
--- deployment
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="PrintRunMatrix" provider="java:RPC">
<parameter name="className" value="beanxml.MatrixBeanService"/>
<parameter name="allowedMethods" value="getMatrixString"/>
<beanMapping qname="myNS:RunMatrix" xmlns:myNS="urn:MatrixBeanService" languageSpecificType="java:beanxml.RunMatrix"/>
<beanMapping qname="myNS:Run" xmlns:myNS="urn:MatrixBeanService" languageSpecificType="java:beanxml.Run"/>
</service>
</deployment>
--- StackTrace
C:\users\hkimSVN\Java\soap_test\beanxml>testit -p8085
C:\users\hkimSVN\Java\soap_test\beanxml>java -cp "..;.;C:\axis-1_2beta\lib\axis.
jar;C:\axis-1_2beta\lib\commons-discovery.jar;C:\axis-1_2beta\lib\commons-loggin
g.jar;C:\axis-1_2beta\lib\jaxrpc.jar;C:\axis-1_2beta\lib\saaj.jar;C:\axis-1_2bet
a\lib\log4j-1.2.8.jar;C:\xerces-2_6_2\build\xml-apis.jar;C:\xerces-2_6_2\build\x
ercesImpl.jar;C:\xerces-2_6_2\build\xmlParserAPIs.jar;C:\users\hkimSVN\JiniTest\
trunk\javarmi;C:\Program Files\Apache Software Foundation\Tomcat 5.0\shared\clas
ses;C:\Program Files\Apache Software Foundation\Tomcat 5.0\shared\classes\LSFJob
Server.jar;C:\SOAP\soap-2_3_1;C:\SOAP\soap-2_3_1\lib\soap.jar;C:\SOAP\javamail-1
_3_1\mail.jar;C:\SOAP\jaf-1.0.2\activation.jar;C:\SOAP\bsf-2_2\lib\bsf.jar;C:\SO
AP\rhino1_5R5\js.jar;C:\cog-0.9.13\lib\cog.jar;C:\cog-0.9.13\lib\log4j-core.jar;
C:\cog-0.9.13\lib\cog.jar;C:\Program Files\Phoenix Integration\ModelCenter 6.0\M
odelCenter.jar;C:\j2sdk1.4.2_05\jre\lib\ext\mysql-connector-java-3.0.11-stable-b
in.jar;C:\apache-ant-1.5.3-1\lib\ant.jar" beanxml.Client localhost -p8085
log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectR
esourceBundle).
log4j:WARN Please initialize the log4j system properly.
url = http://localhost:8085/axis/servlet/AxisServlet
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.NullPointerException
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.NullPointerException
faultActor:
faultNode:
faultDetail:
java.lang.NullPointerException
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder
.java:223)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.
java:130)
at org.apache.axis.encoding.DeserializationContextImpl.endElement(Deseri
alizationContextImpl.java:1053)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(AbstractSAXPar
ser.java:585)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSD
ocumentScannerImpl.java:554)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContent
Dispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1526)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XM
LDocumentFragmentScannerImpl.java:338)
at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration
.java:828)
at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration
.java:758)
at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:148)
at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.j
ava:1178)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
at org.apache.axis.encoding.DeserializationContextImpl.parse(Deserializa
tionContextImpl.java:218)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:568)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:427)
at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.j
ava:701)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:93)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrateg
y.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:144)
at org.apache.axis.client.Call.invokeEngine(Call.java:2688)
at org.apache.axis.client.Call.invoke(Call.java:2671)
at org.apache.axis.client.Call.invoke(Call.java:2357)
at org.apache.axis.client.Call.invoke(Call.java:2280)
at org.apache.axis.client.Call.invoke(Call.java:1741)
at beanxml.Client.main(Client.java:63)
java.lang.NullPointerException
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder
.java:223)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.
java:130)
at org.apache.axis.encoding.DeserializationContextImpl.endElement(Deseri
alizationContextImpl.java:1053)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(AbstractSAXPar
ser.java:585)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSD
ocumentScannerImpl.java:554)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContent
Dispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1526)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XM
LDocumentFragmentScannerImpl.java:338)
at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration
.java:828)
at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration
.java:758)
at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:148)
at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.j
ava:1178)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
at org.apache.axis.encoding.DeserializationContextImpl.parse(Deserializa
tionContextImpl.java:218)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:568)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:427)
at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.j
ava:701)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:93)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrateg
y.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:144)
at org.apache.axis.client.Call.invokeEngine(Call.java:2688)
at org.apache.axis.client.Call.invoke(Call.java:2671)
at org.apache.axis.client.Call.invoke(Call.java:2357)
at org.apache.axis.client.Call.invoke(Call.java:2280)
at org.apache.axis.client.Call.invoke(Call.java:1741)
at beanxml.Client.main(Client.java:63)
Error : java.lang.NullPointerException
--- TCP communication
-- request
POST /axis/servlet/AxisServlet HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.2beta
Host: 127.0.0.1:8085
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: ""
Content-Length: 1189
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:getMatrixString soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="PrintRunMatrix">
<arg1 href="#id0"/>
</ns1:getMatrixString>
<multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:RunMatrix" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="urn:MatrixBeanService">
<run href="#id1"/>
<tsID href="#id2"/>
</multiRef>
<multiRef id="id2" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="soapenc:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">55</multiRef>
<multiRef id="id1" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns3:Run" xmlns:ns3="urn:MatrixBeanService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<runID xsi:type="soapenc:string">77</runID>
</multiRef>
</soapenv:Body>
</soapenv:Envelope>
--response
HTTP/1.1 500 Internal Server Error
Content-Type: text/xml;charset=utf-8
Date: Fri, 30 Jul 2004 15:24:11 GMT
Server: Apache-Coyote/1.1
Connection: close
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>java.lang.NullPointerException</faultstring>
<detail/>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira