<servlet>
<servlet-name>adminservlet</servlet-name>
<servlet-class>
org.apache.axis.transport.http.adminservlet
</servlet-class>
<load-on-startup>100</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>adminservlet</servlet-name>
<url-pattern>/servlet/adminservlet</url-pattern>
</servlet-mapping>
<mime-mapping>
<extension>wsdl</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xsd</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
你现在可以在网址里输入http://localhost/webservicetest/servlet/testservlet 看到了吗?axis是使用axis.jar包里的org.apache.axis.transport.http.axisservlet对应用程序进行处理的,基本配置就讲到这里。
三、接着我们来说axis中的内核。
1)不使用tomcat引擎运行axis。
先建立一个脚步文件,对环境变量classpath进行设置要把lib下的那些包文件的路径全都包括进去,运行:java org.apache.axis.transport.http.simpleaxisserver <port>
2)内部服务处理程序是org.apache.axis.providers.java.rpcprovider,标志出服务所需的方法,然后提供从soap请求消息组成部分的参数。
3)axis的应用程序端管理功能:
java org.apache.axis.client.adminclient 就会列出参数,可供你选择。我们的例子是:java org.apache.axis.client.adminclient -l http://localhost/webservicetest/servlet/testservlet list 就会显示出服务列表,返回的是xml文件
4)wsdl2java应用程序可以把wsdl文件创建基于java的程序,如占位程序等
java org.apache.axis.wsdl.wsdl2java <url>
axis的基本内容说到这里
四、具体例子
1)编写逻辑程序,简单如:soaptest.java
public class soaptest{
public string getstr(string name){
return "hello,"+name;
}
}
2) 部署服务,编写wsdd文件soaptest_deploy.wsdd:
<deployment name="simapletest" xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
xmlns:xsd="http://www.w3.org/2000/10/xmlschema"
xmlns:xsi="http://www.w3.org/2000/10/xmlschema-instance">
<service name="soaptest" provider="java:rpc">
<parameter name="classname" value="soaptest"/>
<parameter name="allowedmethods" value="getstr"/>
</service>
</deployment>
其中classname参数是你的想部署的类名(全名),allowedmethods是调用的服务的方法,如果有多个方法的话可以用空格分开(如: <parameter name="allowedmethods" value="getstr getmoney"/>),当用*的时候表示全部。
好了现在准备部署了,确保环境路径classpath设置正确,运行:
java org.apache.axis.client.adminclient -l http://localhost/webservicetest/servlet/testservlet soaptest_deploy.wsdd
(这里不懂的话,请参考以上的说明)
ok,呵呵,至此,我们已经完成了一个web服务的部署:测试http://localhost/webservicetest/servlet/testservlet 看里面是否多了一个选择soaptest服务?
如果不想要服务了那重新编写一个wsdd文件,内容改为:
<deployment name="simapletest" xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
xmlns:xsd="http://www.w3.org/2000/10/xmlschema"
xmlns:xsi="http://www.w3.org/2000/10/xmlschema-instance">
<service name="soaptest"/>
</deployment>
和上面一样,对比一下就ok了。
五、客户端测试:
客户端我们也可以使用java来进行测试,网上也有资料的,你可以去学习,很简单的。现在为了体现web服务的魅力,我用.net平台来测试吧,客户端使用c#编写(先要安装.net framework sdk):
1)通过wsdl生成web服务代理,在net平台下运行:
wsdl /l:cs /protocol:soap /out:soaptestclient.cs http://localhost/webservicetest/services/soaptest?wsdl
我们通过wsdl得到了一个cs文件soaptestclient.cs(当前目录),你可以打开cs文件,研究一下里面的代码,那个getstr(string name)就是我们需要调用的方法,我们的客户端通过调用该方法就可以调用服务器端的方法,内部的转化wsdl.exe工具已经帮我们完成了,axis下的wsdl2java工具也是一样的功能,可以参考我上面所说的关于axis的内核内容
2)编译cs文件成程序集dll:
csc /target:library /r:system.web.services.dll /r:system.xml.dll soaptestclient.cs
最后我们等到了一个dll文件soaptestclient.dll,客户端程序通过调用它就行了
3)编写客户端应用程序soaptestclientapp.cs
using system;
namespache jws.client{
public class soaptestclientapp{
public soaptestclientapp(){
}
public static void main(string[] args){
if(args.length!=1){
console.writeline("usage:soaptestclientapp <name>");
environment.exit(1);
}
soaptestservice st_service=new soaptestservice();
st_service.getstr("wang wenyin");
}
}
}
4)编译文件csc /r:soaptestclient.dll soaptestclientapp.cs
运行soaptestclientapp
输出结果:
hello,wang wenyin
与预期结果相符。
好了,关于soap开发web服务就说到这里了,希望这篇文章能对大家有所帮助,谢谢了:)有问题的话可以留言,也可以跟我联系 [email protected]
新闻热点
疑难解答
图片精选