Eclipse+tomcat6.0配置SOAP服务的方法

来源:互联网 发布:恶搞锁屏软件下载 编辑:程序博客网 时间:2024/06/06 04:28

因为SOAP出现的比较早,现在很多网上的例子都是tomcat4以前的版本,随着时代的发展,tomcat6.0已经出来了。所以很多东西都改变了。下面就是通过自己摸索和查阅资料来实现了高版本的tomcat下发布soap协议的一些要点。

 

 

1、先安装tomcat 和 eclipse这些就不多说了,SOAP可以下载soap-bin-2.3.1但是貌似其中的包还是不全,得需要自己找全。

2、下载activation.jar mail.jar  soap.jar  xerces.jar四个包并且加入到用户库中。并且在系统的环境变量中添加上去classpath  %TOMCAT_HOME%/lib/soap.jar;%TOMCAT_HOME%/lib
/mail.jar;%TOMCAT_HOME%/lib/activation.jar;%TOMCAT_HOME%/lib/xerces.jar;


3、在src中建立一个包如:cn.com.hb.soap.hello这个名字长度随自己,在里面建立一个HelloWorldClient.java  HelloWorldServer.java文件

HelloWorldClient.java:



//通过soap服务调用HelloWorldService中的getMessage
package cn.com.hubin.soap.hello;
import java.net.URL;
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 HelloWorldClient {
 
    public static void main(String args[]) throws Exception {
    String endPoint = "http://localhost:8080/soap/servlet/rpcrouter";
    Call call = new Call();//创建一个RPC Call
    call.setTargetObjectURI("urn:HelloWorldService");//远程的服务名
    call.setMethodName("getMessage");//访问方法
    call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC); //设置编码风格
   
    URL url = new URL(endPoint); //SOAP服务的网址
    
    //开始发送RPC请求,并返回服务器端的应答
    Response resp = call.invoke(url, "");
 
        //检查应答报文中是否有错,有错就打印出错信息,没错就打印到正确的返回值HelloWorld
        if (resp.generatedFault()) 
        {
            Fault fault = resp.getFault();
            System.out.println("The Following Error Occured: ");
            System.out.println("  Fault Code = " + fault.getFaultCode());
            System.out.println("  Fault String =" + fault.getFaultString());
        } 
        else 
        {
            Parameter result = resp.getReturnValue();
            System.out.println(result.getValue());
        }
    }
}



HelloWorldServer.java:


package cn.com.hubin.soap.hello;


public class HelloWorldService {

 public String getMessage() 
 {
       return "Hello World!";
 }


}

目前为止服务器代码和客户端代码就完成了。因为引用了一些SOAP的库,所以编写起来也很简单


4、在建立一个XML文件来注册SOAP服务。 这个xml文件存放位置随意跟工程没有联系,到时候一些操作只要进入其目录就可以了。建议和工程放到一起。

xml文件:


<?xml version="1.0"?>

<isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment" id="urn:HelloWorldService">

    <isd:provider type="java" scope="Request" methods="getMessage">

        <isd:java class="cn.com.chengang.soap.hello.HelloWorldService" static="false"/>

    </isd:provider>

</isd:service>

代码说明:

l           urn:HelloWorldService是服务名,它要求系统唯一。这里是取成和类名相同,你也可以取其他名称。

l           getMessage是提供的服务方法,也就是类HelloWorldService的方法名

l           <isd:java class=要求填入全类名(包名+类名)


5、发布SOAP服务在刚才xml目录下在cmd环境下输入如下代码:

java  org.apache.soap.server.ServiceManagerClient http://127.0.0.1:8080/soap/servlet/rpcrouter  deploy  HelloWorld.xml

如果正确发布则不显示信息,如果错误则查看相应的错误。前提是Tomcat服务器要开启,否则总显示网络连接错误。

如果要取消发布打如下命令:

java org.apache.soap.server.ServiceManagerClient http://127.0.0.1:8080/soap/servlet/rpcrouter undelpoy "urn:HelloWorldService"

发布完毕后可以去 http://localhost:8080/soap/admin 中的list中查看注册的服务类。

这时候大部分工作已经完成了,下面的是最重要的工作了。

6、将HelloWorldServer.class(在你的java工程的bin目录下面)拷贝到tomcat中的webapps文件中的soap(我这里执行完以上步骤出现的发布文件夹)中WEB-INF/classes中,这里注意,你的class文件在原工程中嵌套的文件夹也要复制过来,比如我的是cn.com.hb.soap.hello所以嵌套的文件夹就是:cn/com/hb/soap/hello/HelloWorldServer.class 。网上说的放到common/classes中就是此步骤,因为新版本的tomcat没有了common这个文件夹

7、在Eclipse中运行客户端就会出现Hello Word的显示字符了。

0 0
原创粉丝点击