我在作一个项目时遇到了一个关于web服务的问题,恳请各位不吝赐教,小弟万谢!
客户端代码如下:
import org.apache.axis.client.*;
import org.apache.axis.encoding.ser.*;
import org.apache.axis.encoding.XMLType;
import javax.xml.namespace.QName;
public class client{
public static void main(String[] args)throws Exception
{
String endpointURL="http://127.0.0.1:8080/axis/services/download";
String methodname="downloadXML";
Service service=new Service();
Call call=(Call)service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpointURL));
call.setOperationName(methodname);
call.setReturnType(XMLType.XSD_STRING);
//以下三个是ws中用到的对象
QName qn=new QName("urn:download","dbp1");
QName qn1=new QName("urn:download","xg");
QName qn2=new QName("urn:download","tr");
//以下三个是自己定义的类
Class cls=DBProcess.class;
Class cls1=XMLGenerate.class;
Class cls2=Transport.class;
call.registerTypeMapping(cls,qn,new BeanSerializerFactory(cls,qn),new Bean
DeserializerFactory(cls,qn));
call.registerTypeMapping(cls1,qn1,new BeanSerializerFactory(cls1,qn1),new
BeanDeserializerFactory(cls1,qn1));
call.registerTypeMapping(cls2,qn2,new BeanSerializerFactory(cls2,qn2),new
BeanDeserializerFactory(cls2,qn2));
String response=(String)call.invoke(new Object[]{});
System.out.println(response);
}
}
这是已经部署成功的class的代码import java.net.*;
import java.sql.*;
import javax.naming.*;
import javax.sql.*;
import java.util.*;
import javax.xml.parsers.*;
import org.jdom.*;
import org.jdom.filter.*;
import org.jdom.Content;
import org.jdom.input.*;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.XMLOutputter;
import java.io.*;
import org.jdom.output.Format;
import edu.nankai.db.*;
import edu.nankai.table.attribute.*;
import edu.nankai.table.operations.*;
import edu.nankai.test.*;
public class Download{
String tablename="aaddressbook";
String tabletype="aaddressbook";
public void setTablename(String tablename)
{
this.tablename=tablename;
}
public void setTabletype(String tabletype)
{
this.tabletype=tabletype;
}
public String getTablename()
{
return this.tablename;
}
public String getTabletype()
{
return this.tabletype;
}
public String downloadXML()throws Exception
{
DBProcess dbp1=new DBProcess();
dbp1.setDBType(DBProcess.MYSQL);
dbp1.setTableName(this.tablename);
dbp1.GetConnection();
/////////////////////////////////
XMLGenerate xg=new XMLGenerate();
xg.getDBProcess(dbp1);
xg.setTableType(this.tabletype);
xg.Init();
Document doc=xg.XMLMake();
xg.XMLOutput(doc);
////////////////////////////////
Transport tr=new Transport();
tr.transXML("sample.xml");
return "finish!!!!";
}
}
一编译客户端,就会出现这样的错误:
Exception in thread "main" AxisFault
faultCode: {
http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.reflect.InvocationTargetException
faultActor:
faultNode:
faultDetail:
{
http://xml.apache.org/axis/}stackTrace: AxisFault
faultCode: {
http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.reflect.InvocationTargetException
faultActor:
faultNode:
faultDetail:
java.lang.reflect.InvocationTargetException
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBui
lder
.java:260)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuil
der.
java:169)
at org.apache.axis.encoding.DeserializationContextImpl.endElement(De
seri
alizationContextImpl.java:1015)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1528)
at org.apache.crimson.parser.Parser2.content(Parser2.java:1779)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1507)
at org.apache.crimson.parser.Parser2.content(Parser2.java:1779)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1507)
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:500)
at org.apache.crimson.parser.Parser2.parse(Parser2.java:305)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:
442)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
at org.apache.axis.encoding.DeserializationContextImpl.parse(Deseria
liza
tionContextImpl.java:242)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:538)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:376)
at org.apache.axis.client.Call.invokeEngine(Call.java:2583)
at org.apache.axis.client.Call.invoke(Call.java:2553)
at org.apache.axis.client.Call.invoke(Call.java:2248)
at org.apache.axis.client.Call.invoke(Call.java:2171)
at org.apache.axis.client.Call.invoke(Call.java:1691)
at client.main(client.java:26)
java.lang.reflect.InvocationTargetException
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBui
lder
.java:260)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuil
der.
java:169)
at org.apache.axis.encoding.DeserializationContextImpl.endElement(De
seri
alizationContextImpl.java:1015)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1528)
at org.apache.crimson.parser.Parser2.content(Parser2.java:1779)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1507)
at org.apache.crimson.parser.Parser2.content(Parser2.java:1779)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1507)
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:500)
at org.apache.crimson.parser.Parser2.parse(Parser2.java:305)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:
442)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
at org.apache.axis.encoding.DeserializationContextImpl.parse(Deseria
liza
tionContextImpl.java:242)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:538)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:376)
at org.apache.axis.client.Call.invokeEngine(Call.java:2583)
at org.apache.axis.client.Call.invoke(Call.java:2553)
at org.apache.axis.client.Call.invoke(Call.java:2248)
at org.apache.axis.client.Call.invoke(Call.java:2171)
at org.apache.axis.client.Call.invoke(Call.java:1691)
at client.main(client.java:26)
Press any key to continue...
这究竟是怎么回事呢?小弟刚刚接触web服务,真的百思不解,拜托各位能为我指点迷津
!!
您真诚的 严健
--
FROM 202.113.30.*