弱问关于JAVA调用Web Service的一个问题

Nathan_LD 2008-09-14 06:39:00
我现在要调用一个Web Service
如果写在API中,是没有问题的,代码如下:
public static void main(String[] args) {
// TODO Auto-generated method stub
String msg="";
try{

String URL="http://192.168.100.15:8080/Project/services/QueryService";
Service service=new Service();

Call call=(Call)service.createCall();
call.setTargetEndpointAddress(new java.net.URL(URL));

call.setOperationName("example");
msg=(String)call.invoke(new Object[]{"abc"});
System.out.println(msg);
}catch(Exception e){
e.printStackTrace();
System.out.println("远程调用webservice失败!");
}
}

但是如果我把这段代码写在一个函数里面,输入参数是一个字符串,返回一个字符串,并封装在一个类里面,我在调用这个函数的时候
就会出现异常:
java.lang.NoClassDefFoundError: javax/xml/rpc/Service

这是为什么?


上述代码都是写在一个工程里面的,工程的classpath里面已经加了axis的包,不然那个API也不会调用成功了
...全文
262 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kakusann 2008-10-26
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20081025/10/87e49fe7-f5ba-4d72-8303-290f86b60e62.html

参照我帖子,是一个意思不。
Nathan_LD 2008-09-14
  • 打赏
  • 举报
回复
恩,我就是这么放的,多谢!
huoyin 2008-09-14
  • 打赏
  • 举报
回复
一个是用的是tomcat的jvm
另一个是你在eclipse(或其它ide)中的jvm

两个的classpath是不一定相同的,各有各的配置地方,一个比较常用的办法是将axis.jar,jaxrpc.jar和saaj.jar放在WEB-INF/lib下
Nathan_LD 2008-09-14
  • 打赏
  • 举报
回复
谢谢大牛

问题已经解决了

结贴前问最后一个弱一点的问题:

我其实写的一个是一个web工程 用了jsp+servlet
然后在servlet里面写代码
来远程调用另外一个web service,但是不行,我就觉得可能是缺少包了,但是因为是第一次接触
web service,不熟悉,所以不知道是什么包,baidu,google无果

于是我就紧接着在这个工程下 写了一个api 这样就可以了

既然是同一个工程下,难道用的不是一个classpath么 还是说只有在servlet里面调用web service的时候

才需要这两个包 所以要加上
huoyin 2008-09-14
  • 打赏
  • 举报
回复
saaj.jar

因为两边的classpath配置的不一样。
Nathan_LD 2008-09-14
  • 打赏
  • 举报
回复
啊,加了jaxrpc.jar后那个异常已经解决了,但是又出了新的异常
javax/xml/soap/SOAPException
这又是缺少哪个包阿?
而且我主要是想知道为什么写一个API可以调用,但是写在servlet里面就不行

是不是servlet调用Web Service的时候需要一些新的包或者新的写法?

谢谢了
huoyin 2008-09-14
  • 打赏
  • 举报
回复
javax/xml/rpc/Service 类在jaxrpc.jar文件中,找一个jaxrpc.jar加进classpath就好了
Nathan_LD 2008-09-14
  • 打赏
  • 举报
回复
对不起,我又看了一下,问题应该不再这里,而在于我是在一个servlet里面调用的这个函数,结果就出异常了
问题应该在于为什么不能在servlet里面调用?
ansj 2008-09-14
  • 打赏
  • 举报
回复
看不清楚帮顶

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧