是不是应该改为:
url = new URL("http://localhost:8080/soap/servlet/rpcrouter.jws?wsdl");
url = new URL("http://localhost:8080/soap/servlet/rpcrouter.jws?wsdl");
解决方案 »
- 跪求大神帮忙编个程序
- 执行一次查询,可是action的查询方法执行了两遍
- 求助 学习路线的问题。。三大框架或者Android???
- 关于自建客户端和测试的问题
- JSP文件上传组件
- eclipse的xfire插件自动生成客户端的问题~ 急
- cxf与spring整合抛了一个异常,求帮助!
- 在开发ejb中,本地(local)接口、远程(Remote)接口、Home接口、LocalHome接口这些是放在都放在应用服务器中吗,需不需要放在客服端中?
- xp professional edition 可以安装 j2ee SDK 1.3 吗? --- 在线等
- NuSoap 的 Server 能不能使用其它语言开发的客户端来调用
- ●●●JNDI连接数据库竟然出现这样的错误,晕啊●●●
- could you help me?高分求助,400分
感觉应该是ourUrn和服务器不匹配……
E:\java application\soapapp\HelloWorld\.;
这么最后还多一个“\.”?而且java和application中间还有一个空格,我记得这个在classpath中是不允许的吧?还是把那个目录名改掉吧。
1进入你的工程目录 在这个目录里把所有包打成JAR包 jar cvf abc.jar *.*
2将abc.jar放入COMMON\LIB里即可
错误原因是TOMCAT找不到HelloWorld.SOAPService,按我说的做就找到了.
或者将你的工程加入到TOMCAT的类路径,注意是TOMCAT的类路径也可以解决,但配置麻烦.
Apache SOAP http://xml.apache.org/soap/index.html
Tomcat http://jakarta.apache.org/1、解压Apache SOAP到%ApacheSOAP%,如:F:\OpenSource\SOAP2、安装Tomcat到%Tomcat%,如:F:\Program Files\Apache Group\Tomcat3、复制%ApacheSOAP%\webapps\soap.war文件到%Tomcat%\webapps目录下4、启动Tomcat,此时Tomcat自动将soap.war解压了5、在%Tomcat%\webapps\soap\WEB-INF\classes建立测试文件HelloSOAPClient.java、HelloSOAP.java,源码附后6、编译,进入%Tomcat%\webapps\soap\WEB-INF\classes目录
javac -classpath .;%classpath%;F:\OpenSource\SOAP\lib\soap.jar *.java7、SOAP服务的发布
使用IE浏览器浏览http://localhost:8080/soap/admin/index.html,进入Deploy,填写如下信息:
ID: urn:hello.hellosoap
Scope: Request
Methods getWelcomeValue
Provider Type: Java
Java Provider Provider Class: HelloSOAP
Java Provider Static: NO
确认发布,可以点List查看已发布服务
Service Listing
Here are the deployed services (select one to see details)urn:hello.hellosoap8、运行,java -classpath .;%classpath%;F:\OpenSource\SOAP\lib\soap.jar HelloSOAPClient
可以看到返回值信息如下:
SOAP调用测试开始
Name:俞黎敏
Result:欢迎光临SOAP:俞黎敏
SOAP调用测试结束则证明配置和测试成功,以后就可以发布自己的SOAP服务了!9、删除服务Un-deploy之即可
Un-Deploy a Service
Select the service to be undeployed:urn:hello.hellosoappublic class HelloSOAP
{
public String getWelcomeValue(String name)
{
String strResult = "欢迎光临SOAP:" + name;
return strResult;
}
}import java.net.URL;
import java.util.Vector;import org.apache.soap.Constants;
import org.apache.soap.Fault;
import org.apache.soap.rpc.Call;
import org.apache.soap.rpc.Parameter;
import org.apache.soap.rpc.Response;public class HelloSOAPClient
{
public static void main(String[] args) throws Exception
{
System.out.println("SOAP调用测试开始");
String name = "俞黎敏";
HelloSOAPClient helloSOAPClient = new HelloSOAPClient();
//调用远程的SOAP服务
String resultValue = helloSOAPClient.doSOAPRequest("hello.hellosoap","getWelcomeValue","name",name);
System.out.println("Name:" + name);
System.out.println("Result:" + resultValue);
System.out.println("SOAP调用测试结束");
} public String doSOAPRequest(String _strURI,String _strMethodName,String _strName,String _strValue) throws Exception
{
//创建一个远程调用
Call call = new Call();
//设置远程对象的URI
call.setTargetObjectURI("urn:" + _strURI);
//设置调用的方法名
call.setMethodName(_strMethodName);
//设置编码风格
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
//设置方法调用的参数
Vector params = new Vector();
params.addElement(new Parameter(_strName,String.class,_strValue,null));
call.setParams(params);
//发送RPC请求,请查看webapps\soap\web.xm,就知道rpcrouter是映射到org.apache.soap.server.http.RPCRouterServlet这个类
Response resp = call.invoke(new URL("http://localhost:8080/soap/servlet/rpcrouter"),"");
if(resp.generatedFault())
{
//远程调用出错处理
Fault fault = resp.getFault();
System.out.println("调用失败!");
System.out.println("错误代号:" + fault.getFaultCode());
System.out.println("错误信息:" + fault.getFaultString());
return "调用失败!";
}
else
{
//调用成功,获取返回值
Parameter result = resp.getReturnValue();
return result.getValue().toString();
}
}
}