这是我的部署文件,请大家看下我错在哪里??
<?xml version="1.0" encoding="UTF-8"?>
<deployment name="defaultClientConfig"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
xmlns:handler="http://xml.apache.org/axis/wsdd/providers/handler"
xmlns="http://xml.apache.org/axis/wsdd/">
<service name="urn:xmlToDB" provider="java:RPC">
<namespace>http://localhost:8083/axis/services/xmlToDB</namespace>
<parameter name="className" value="com.borland.samples.xml.XMLDBMS.XMLDBMS_Test"/>
<parameter name="allowedMethods" value="xmlToDB"/>
<typeMapping
xmlns:ns="http://localhost:8083/axis/services/xmlToDB"
qname="ns:File"
type="java:java.io.File"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
/>
</service>
</deployment>这是客户断程序:
package com.borland.samples.xml.XMLDBMS;import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import java.io.File;
import org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory;
import org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory;
import javax.xml.rpc.ServiceFactory;
public class Client {
public Client() {
} public static void main(String[] args) {
try {
String endPoint = "http://localhost:8083/axis/services/xmlToDB";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endPoint));
call.setOperationName(new QName("urn:xmlToDB", "xmlToDB"));
File source = new File("D:/jczhouWork/XMLDBMSBeans/InputFile.xml");
QName qnameAttachment = new QName("urn:xmlToDB", "ns:File");
call.registerTypeMapping(source.getClass(), //Add serializer for attachment.
qnameAttachment,
JAFDataHandlerSerializerFactory.class,
JAFDataHandlerDeserializerFactory.class); call.invoke(new Object[] {source});
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
出错主要信息是CLASSCASTEXCEPTION
<?xml version="1.0" encoding="UTF-8"?>
<deployment name="defaultClientConfig"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
xmlns:handler="http://xml.apache.org/axis/wsdd/providers/handler"
xmlns="http://xml.apache.org/axis/wsdd/">
<service name="urn:xmlToDB" provider="java:RPC">
<namespace>http://localhost:8083/axis/services/xmlToDB</namespace>
<parameter name="className" value="com.borland.samples.xml.XMLDBMS.XMLDBMS_Test"/>
<parameter name="allowedMethods" value="xmlToDB"/>
<typeMapping
xmlns:ns="http://localhost:8083/axis/services/xmlToDB"
qname="ns:File"
type="java:java.io.File"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
/>
</service>
</deployment>这是客户断程序:
package com.borland.samples.xml.XMLDBMS;import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import java.io.File;
import org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory;
import org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory;
import javax.xml.rpc.ServiceFactory;
public class Client {
public Client() {
} public static void main(String[] args) {
try {
String endPoint = "http://localhost:8083/axis/services/xmlToDB";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endPoint));
call.setOperationName(new QName("urn:xmlToDB", "xmlToDB"));
File source = new File("D:/jczhouWork/XMLDBMSBeans/InputFile.xml");
QName qnameAttachment = new QName("urn:xmlToDB", "ns:File");
call.registerTypeMapping(source.getClass(), //Add serializer for attachment.
qnameAttachment,
JAFDataHandlerSerializerFactory.class,
JAFDataHandlerDeserializerFactory.class); call.invoke(new Object[] {source});
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
出错主要信息是CLASSCASTEXCEPTION
2005-6-21 16:22:38 org.apache.axis.attachments.AttachmentsImpl getAttachmentCount警告: Exception:AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: java.lang.ClassCastException faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace:java.lang.ClassCastException at org.apache.axis.encoding.ser.JAFDataHandlerSerializer.serialize(JAFDataHandlerSerializer.java:55) at org.apache.axis.encoding.SerializationContextImpl.serializeActual(SerializationContextImpl.java:1249) at org.apache.axis.encoding.SerializationContextImpl.serialize(SerializationContextImpl.java:779) at org.apache.axis.encoding.SerializationContextImpl.outputMultiRefs(SerializationContextImpl.java:850) at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:145) at org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:484) at org.apache.axis.message.MessageElement.output(MessageElement.java:899) at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:298) at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:272) at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:483) at org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:519) at org.apache.axis.Message.getContentType(Message.java:475) at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:293) at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:88) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.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:147) at org.apache.axis.client.Call.invokeEngine(Call.java:2735) at org.apache.axis.client.Call.invoke(Call.java:2718) at org.apache.axis.client.Call.invoke(Call.java:2394) at org.apache.axis.client.Call.invoke(Call.java:2317) at org.apache.axis.client.Call.invoke(Call.java:1774) at com.borland.samples.xml.XMLDBMS.Client.main(Client.java:28) {http://xml.apache.org/axis/}hostname:zhhrsoft-meteorjava.lang.ClassCastException at org.apache.axis.AxisFault.makeFault(AxisFault.java:101) at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:300) at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:272) at org.apache.axis.SOAPPart.saveChanges(SOAPPart.java:483) at org.apache.axis.attachments.AttachmentsImpl.getAttachmentCount(AttachmentsImpl.java:519) at org.apache.axis.Message.getContentType(Message.java:475) at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:293) at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:88) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.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:147) at org.apache.axis.client.Call.invokeEngine(Call.java:2735) at org.apache.axis.client.Call.invoke(Call.java:2718) at org.apache.axis.client.Call.invoke(Call.java:2394) at org.apache.axis.client.Call.invoke(Call.java:2317) at org.apache.axis.client.Call.invoke(Call.java:1774) at com.borland.samples.xml.XMLDBMS.Client.main(Client.java:28)Caused by: java.lang.ClassCastException at org.apache.axis.encoding.ser.JAFDataHandlerSerializer.serialize(JAFDataHandlerSerializer.java:55) at org.apache.axis.encoding.SerializationContextImpl.serializeActual(SerializationContextImpl.java:1249) at org.apache.axis.encoding.SerializationContextImpl.serialize(SerializationContextImpl.java:779) at org.apache.axis.encoding.SerializationContextImpl.outputMultiRefs(SerializationContextImpl.java:850) at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:145) at org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:484) at org.apache.axis.message.MessageElement.output(MessageElement.java:899) at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:298) ... 16 more
谢谢您!bison_java
可是我看了很多例子,其中有序列化自己写的类,然后再声明typeMapping!
http://ws.apache.org/axis/java/user-guide.html#XMLJavaDataMappingInAxis里面都说了