web services 调用的问题!!
主要功能是通过在客户端输入一个id,从服务器端返回一个product的对象.
调用的web服务是:
import java.util.Vector;
import java.lang.*;
public class HelloClient
{
public String getName(String name)
{
return "hello "+name;
}
public product getProduct(String id)
{
queryProduct p=new queryProductImpl();
return p.getProduct("2");
}
}
设计的接口,和实现类:
public interface queryProduct
{public product getProduct(String id);}
public class queryProductImpl implements queryProduct
{
public product getProduct(String id)
{ product p=new product();
if (id=="2")
{ System.out.println("this is product id= 2!");
p.id="2";
p.pname="computer";
p.price=5000;}
return p;
}
}
客户端:
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;
import java.net.MalformedURLException;
import java.rmi.RemoteException;
import javax.activation.DataHandler;
import javax.mail.internet.*;
import java.util.*;
import java.lang.reflect.*;
public class SayHelloClient2
{
public static void main(String[] args)
{
try
{
long t1= System.currentTimeMillis();
String endpoint = "http://localhost:8080/Axis/HelloClient.jws";
Service service = new Service();
Call call = null;
call = (Call) service.createCall();
call.setOperationName(new QName(
"http://localhost:8080/Axis/HelloClient.jws",
"getProduct"));
call.setTargetEndpointAddress
(new java.net.URL(endpoint));
(product)call.invoke(new Object[] {"2"});
System.out.println("useTime="+(System.currentTimeMillis()-t1));
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
感觉是返回的complex type解析不了一样..郁闷阿
结果出现异常错误:
java.lang.reflect.InvocationTargetException
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.reflect.InvocationTargetException
faultActor:
faultNode:
faultDetail:
不知道怎么搞定阿?
望大家能帮我解答一下!!
感谢!
问题点数:100、回复次数:3Top
1 楼mosquitoxh((IT,中间件,架构)http://it.paiming.org/bbs)回复于 2006-03-08 18:40:11 得分 50
product要实现串行化接口
SerializeTop
2 楼chg2008(岂能尽如人意,但求无愧我心!)回复于 2006-03-10 13:58:21 得分 20
应该不是串行化的问题 ...........
(product)call.invoke(new Object[] {"2"});
这个语句可以吗?
Top
3 楼twowolf(两只狼)回复于 2006-03-10 16:11:59 得分 30
String endpoint = "http://localhost:8080/Axis/HelloClient.jws"; 没问题把
我写的和你这不大一样,不过也是初学者Top




