分享
 
 
 

HelloWorld------SOAP

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

安装Apache SOAP

下载需要的资源:

Apache SOAP 2.3 http://apache.linuxforum.net/dist/ws/soap/version-2.3.1/soa

p-bin-2.3.1.zip

mail.jar from JavaMail http://java.sun.com/products/javamail

activation.jar from JavaBeans Activation Framework http://java.sun.com/prod

ucts/beans/glasgow/jaf.html

a JAXP compatible, namespace-aware XML parser such as Apache Xerces (v1.1.2

or later) http://xml.apache.org/xerces-j

Tomcat 4.1.x http://jakarta.apache.org/tomcat

安装tomcat:

网上很多介绍的文章,这里不再赘述。

安装Apache SOAP:

把下载回来的soap-2.3.1.zip解压到c:\soap-2_3_1。把c:\soap-2_3_1\lib下的两

个文件复制到%TOMCAT_HOME%\common\lib下面;把c:\soap-2_3_1\webapps下的soap.war

复制到%TOMCAT_HOME%\webapps下面;把其他的几个jar文件(mail.jar,activation.jar,xercesImpl.jar,xml-apis.jar)复制到%TOMCAT_HOME%\common\lib下面。

设置classpath变量:

把上面的四个jar文件路径添加到classpath变量中

%TOMCAT_HOME%\common\lib\soap.jar

%TOMCAT_HOME%\common\lib\mail.jar

%TOMCAT_HOME%\common\lib\xml-apis.jar

%TOMCAT_HOME%\common\lib\activation.jar

%TOMCAT_HOME%\common\lib\xercesImpl.jar

PS:我的做法是把这四个jar文件合成一个soap-all.jar文件,并不路径添加到clas

spath中去,这样省点事。

测试客户端配置:

1.打开web浏览器,访问http://127.0.0.1:8080/soap/servlet/rpcrouter,如果出

现提示: “Sorry, I don't speak via HTTP GET- you have to use HTTP POST to tal

k to me”,第一步测试通过。

2.命令行测试:在命令行下输入下面命令

>java org.apache.soap.server.ServiceManagerClient http://127.0.0.1:808

0/soap/servlet/rpcrouter list

如果输出只是"Deployed Services:",没有得到其他任何输出信息,否则请检查

classpath配置是否正确

运行HelloWorldService服务

HelloWorldService.java

__________________________________

public class HelloWorldService

{

String getMessage()

{

return "Hello World!";

}

}

_________________________________

创建部署描述符:

部署描述符其实就是一个xml文件。当SOAP请求被发送给org.apache.soap.server.htt

p.RPCRouterServlet时,RPCRouterServlet使用部署描述符来决定把请求路由至何处。下

面将叙述用Apache SOAP的命令行工具注册服务。

HelloWorld.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="HelloWorldService" static="false"/>

</isd:provider>

</isd:service>

---------------------------------

注册服务:

在命令行下输入(注意要在HelloWorldService.xml文件所在目录下)

> java org.apache.soap.server.ServiceManagerClient http://127.0.0.1:8080/so

ap/servlet/rpcrouter deploy HelloWorld.xml

如果没有错误提示则注册成功,可以用下面的几个命令来查看已经注册的服务

> java org.apache.soap.server.ServiceManagerClient http://127.0.0.1:8080/so

ap/servlet/rpcrouter list

出现提示“Deployed Services: urn:HelloWorldService”

注销服务:

> java org.apache.soap.server.ServiceManagerClient http://127.0.0.1:8080/so

ap/servlet/rpcrouter undelpoy "urn:HelloWorldService"

还可以查询服务属性:

> java org.apache.soap.server.ServiceManagerClient http://127.0.0.1:8080/so

ap/servlet/rpcrouter query "urn:HelloWorldService"

HelloWorld服务客户端

HelloWorldClient.java

_______________________

import org.apache.soap.Constants;

import java.net.URL;

import org.apache.soap.Fault;

import org.apache.soap.rpc.Call;

import org.apache.soap.rpc.Response;

import org.apache.soap.rpc.Parameter;

public class HelloWorldClient {

static String DEFAULT_ENDPOINT = "http://localhost:8080/soap/servlet/rpcrout

er";

public static void main(String args[]) throws Exception {

String endPoint = DEFAULT_ENDPOINT;

//Process Arguments

if (args.length == 1)

endPoint = args[0];

else if (args.length > 1)

System.out.println("java HelloWorldClient [endpoint]");

// Build the SOAP RPC request message using the Call object

Call call = new Call();

call.setTargetObjectURI("urn:HelloWorldService");

call.setMethodName("getMessage");

call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);

// Create a URL object, which represents the endpoint

URL url = new URL(endPoint);

// Send the SOAP RPC request message using invoke() method

Response resp = call.invoke(url, "");

// Check the response.

if (resp.generatedFault()) { // Error Occured

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 { // Completed Successfully

Parameter result = resp.getReturnValue();

System.out.println(result.getValue());

}

}

}

-----------------------------------------------

运行服务:

首先把HelloWorldService.class打包成jar文件放到%tomcat_home%/common/lib或者

直接把HelloWorldService.class放到%tomcat_home%/common/classes下

按照上面讲的方法注册服务,然后运行HelloWorldClient,屏幕输出"HelloWorld!"

--

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有