分享
 
 
 

用wsdd来开发web services

王朝other·作者佚名  2006-03-10
窄屏简体版  字體: |||超大  

用wsdd(服务部署描述语言),主要是编写java文件和编写wsdd文件。

1。编写java文件,最好是定义在某一个包下,否则便以后直接放到\WEB-INF\classes下,有时会出错,原因是在用deploy.wsdd部署时映射不对。然后直接包对应的包放到\WEB-INF\classes中。HelloWorldG.java文件:

package test.gaolong;

public class HelloWorldG{

public String sayHelloG(String name){

return "HelloG "+name;

}

}

2。编写wsdd文件,根据wsdd文件的规范编写相关文档。例如:(deploy.wsdd)

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"><--命名空间-->

<service name="HelloWorldG" provider="java:RPC"><-服务名-->

<parameter name="className" value="test.gaolong.HelloWorldG"/><--对应的主类--->

<parameter name="allowedMethods" value="*"/><---注册相应的方法,如果只有一个方法,可以直接注册方法名--->

<parameter name="allowedRoles" value="user"/><--定义用户认证--->

<requestFlow><-用户认证的描述文件-->

<handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>

<handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>

</requestFlow>

</service>

</deployment>

3。部署wsdd文件:打开命令口,切换到deploy.wsdd目录下,运行java org.apache.axis.client.AdminClient即可完成部署。

这儿可能出错,正确的显示:

D:\bea\user_projects\domains\mydomain\applications\axis\WEB-INF\classes>java org.apache.axis.client.AdminClient -p 7001 deploy.wsdd

Processing file deploy.wsdd

<Admin>Done processing</Admin>

当在wsdl中使用deploy.wsdd来部署时,对于服务器是要打开的,而且当服务器的端口不是8080时,采用要求java org.apache.axis.client.AdminClient -p <port> deploy.wsdd 来指定并进行服务部署。

4。打开server-config.wsdd会发现增加了语句描述:<service name="HelloWorldG" provider="java:RPC">

<requestFlow>

<handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>

<handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>

</requestFlow>

<parameter name="allowedRoles" value="user"/>

<parameter name="allowedMethods" value="*"/>

<parameter name="className" value="test.gaolong.HelloWorldG"/>

</service>

其实直接到该文件中增加该内容,不必用org.apache.axis.client.AdminClient来部署描述。

打开IE,可以在http://127.0.0.1:7001/axis/servlet/AxisServlet看到该服务部署到服务列表上。

5。编写测试application客户端,其代码如下:

import javax.xml.rpc.ParameterMode;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import org.apache.axis.encoding.XMLType;

import javax.xml.namespace.QName;

public class ServiceClient{

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

String endpoint="http://127.0.0.1:7003/axis/services/HelloWorldG";

String name="gaong1";

Service service=new Service();

Call call=(Call) service.createCall();//回调服务

call.setUsername("gaolong1");

call.setPassword("8001");//用户认证

call.setTargetEndpointAddress(new java.net.URL(endpoint));

// call.setOperationName("sayHelloG");

call.setOperationName(new QName("http://gaolong.test", "sayHelloG"));//设置指定的命名空间,根据wsdl文件来决定

call.addParameter("name",XMLType.XSD_STRING,ParameterMode.IN);

call.setReturnType(XMLType.XSD_STRING);//XMLType.XSD_STRING);

String ret=(String)call.invoke(new Object[] {name});

System.out.println(ret);

}

}

运行之后有关的显示。

6。通过tcpmonitor来监听的soap消息如下:

请求soap:

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<soapenv:Body>

<ns1:sayHelloG soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://gaolong.test">

<name xsi:type="xsd:string">gaolong1</name>

</ns1:sayHelloG>

</soapenv:Body></soapenv:Envelope>

回应soap:

<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<soapenv:Body>

<ns1:sayHelloGResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://gaolong.test">

<sayHelloGReturn xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">HelloG gaolong1</sayHelloGReturn>

</ns1:sayHelloGResponse>

</soapenv:Body>

</soapenv:Envelope>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有