如何在axis2下,调用webservice?

startafresh 2006-08-22 07:10:03
在用客户端调用webservice时,错误如下:

org.apache.axis2.AxisFault: services.myService
at org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:287)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:457)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:399)
at test.Test1.main(Test1.java:44)
Caused by: java.lang.Exception: org.apache.axis2.AxisFault: services.myService; nested exception is:
java.lang.ClassNotFoundException: services.myService
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:318)
at org.apache.axis2.receivers.AbstractMessageReceiver.makeNewServiceObject(AbstractMessageReceiver.java:60)
at org.apache.axis2.receivers.AbstractMessageReceiver.getTheImplementationObject(AbstractMessageReceiver.java:90)
at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:71)

因为不知道如何调试判断webservice问题出在哪里,请各位大哥费心看一下我的程序,指点一下,万分感谢。


服务端代码:

import org.apache.axiom.attachments.utils.IOUtils;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.OMText;
import org.apache.axis2.AxisFault;
import java.io.FileOutputStream;
import java.io.*;
import java.util.Iterator;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
public class myService {

public OMElement Hello(OMElement element) throws Exception {
OMElement _name = null;
OMElement _sex = null;
System.out.println(element);

for (Iterator _iterator =element.getChildElements(); _iterator.hasNext();)
{
OMElement _ele = (OMElement) _iterator.next();
if (_ele.getLocalName().equalsIgnoreCase("name")) _name = _ele;
if (_ele.getLocalName().equalsIgnoreCase("sex")) _sex = _ele;

}

if (_name == null || _sex == null) {
throw new AxisFault("Either Name or Sex is null");
}
String mName = _name.getText();
String mSex = _sex.getText();

System.out.println("Hello "+mSex+"."+mName);

设置返回数据
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace ns = fac.createOMNamespace("http://example.org/mtom/data", "x");
OMElement ele = fac.createOMElement("response", ns);
ele.setText("true");

return ele;
}

}

service.xml

<service name="Version">
<description>
This service is to get the running Axis version
</description>
<parameter name="ServiceClass" locked="false">services.myService</parameter>
<operation name="Hello">
<actionMapping>urn:Hello</actionMapping>
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
</service>


客户端
import java.io.StringWriter;

import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;

import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axiom.soap.SOAP12Constants;

import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;

;

public class Test1 {
private static EndpointReference targetEPR = new EndpointReference("http://202.218.236.132:8080/axis2/services/MyService");
public static void main(String[] args) {
try {
OMElement payload = getMyServiceOMElement();
Options options = new Options();
options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
options.setTo(targetEPR);
options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

ServiceClient sender = new ServiceClient();
sender.setOptions(options);
System.out.println("payload:"+payload);

OMElement result = sender.sendReceive(payload);
System.out.println("Resule:"+result);

StringWriter writer = new StringWriter();
result.serialize(XMLOutputFactory.newInstance().createXMLStreamWriter(writer));
writer.flush();
System.out.println(writer.toString());


} catch (AxisFault axisFault) {
axisFault.printStackTrace();
} catch (XMLStreamException e) {
e.printStackTrace();
}
}
public static OMElement getMyServiceOMElement() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace("http://example.org/mtom/data", "x");
OMElement method = fac.createOMElement("Hello", omNs);
OMElement mName = fac.createOMElement("name", omNs);
mName.setText("Zhang");
OMElement mSex = fac.createOMElement("sex", omNs);
mSex.setText("Mr");
method.addChild(mName);
method.addChild(mSex);
return method;
}
}
...全文
1233 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
钟奎 2007-02-25
  • 打赏
  • 举报
回复
org.apache.axis2.AxisFault: services.myService
...

package services
guishuanglin 2006-12-27
  • 打赏
  • 举报
回复
package com.willfar.wfec.test;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;

public class WebService {

/**
* 测试调用服务类
* @param args
*/
public static void main(String[] args) {

System.out.println(webService());
}

/**
* 调用webService服务的字符串相加方法
* @return
*/
private static String webService9800StringAdd(){
//服务地址 http://localhost:8080/webService9800/services/HelloWebService
String url = "http://localhost:8080/webService9800/services/HelloWebService" ;
String resultInfo ="";
try {
//初始化服务调用
Service service = new Service();
Call call = (Call) service.createCall();
//设置调用服务地址
call.setTargetEndpointAddress(new java.net.URL(url));
//设置调用服务名称,同时指定服务中的方法名称
call.setOperationName(new QName("HelloWebService", "stringAdd"));
//创建两个参数的数组,调用服务,得到结果resultInfo
resultInfo = (String)call.invoke(new Object[]{"100","200"});
} catch (Exception ex) {
ex.printStackTrace();
}
return resultInfo;
}
迷眼流金 2006-12-20
  • 打赏
  • 举报
回复
。。。
javafound 2006-12-19
  • 打赏
  • 举报
回复
java6下十分钟搞定WebService-- 不必再用第三方库

具体见:http://bbs.netjava.org/index.php?topic=23.0
assed 2006-12-19
  • 打赏
  • 举报
回复
java.lang.ClassNotFoundException: services.myService

给出你的打包文件aar的文档结构
beconcon 2006-12-19
  • 打赏
  • 举报
回复
帮ding+学习
YuLimin 2006-12-18
  • 打赏
  • 举报
回复
java.lang.ClassNotFoundException: services.myService???
yuntailyg 2006-12-18
  • 打赏
  • 举报
回复
为什么要将messageReceiver 设置为RawXMLINOutMessageReceive?
fengfangfang 2006-08-30
  • 打赏
  • 举报
回复
<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>

67,513

社区成员

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

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