用wsdd来开发web services

用wsdd来开发web services

用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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值