Java 创建WebService-阿里云开发者社区

开发者社区> 技术小胖子> 正文

Java 创建WebService

简介:
+关注继续查看
使用Axis开发WebService 
1.下载并安装Axis 
1)登陆http://axis.apache.org/axis/站点下载Axis 
   下载axis-bin-1_4.zip,解压后的目录结构如下: 
    
 
  2)安装Axis 
   首先要成功的安装Tomcat,然后将下载的Axis目录下面的webapps中的axis的 
   整个文件夹全部拷贝到Tomcat安装目录的Webapps下面 
   启动Tomcat,在浏览器中输入http://localhost:8080/axis之后 
   显示的界面如下: 
   
 
Axis安装完毕。 
2.开发WebService 
1)即时发布的WebService 
  即时发布提供了一种非常简单的发布方式,发布者只要有Java源代码,然后把其后缀名改成jws,拷贝到%Tomcat_HOME%\webapps\axis下即完成了发布工作。 
a)服务端代码:文件名SayHelloServer.java 
 
Java代码  收藏代码
  1. public class SayHelloServer {  
  2.   
  3. ublic String getName(String name){  
  4. return "hello "+name;  
  5.   
  6. }  

把SayHelloServer.java文件改为SayHelloServer.jws然后拷贝到%Tomcat_HOME%\webapps\axis目录下,启动Tomcat后访问http://locahost:8080/axis/SayHelloServer.jws可以看到Click to see the WSDL的超链接 

 
说明服务器端已经发布成功,下面开始编写Client端代码。 
  b)客户端代码: 
Java代码  收藏代码
  1. package com.wl.webservice.test;  
  2.   
  3. import javax.xml.namespace.QName;  
  4.   
  5. import org.apache.axis.client.Call;  
  6. import org.apache.axis.client.Service;  
  7.   
  8. public class SayHelloClient {  
  9.   
  10.     /** 
  11.      * @param args 
  12.      */  
  13.     public static void main(String[] args) {  
  14.         // TODO Auto-generated method stub  
  15.   
  16.         try {  
  17.             String endpoint="http://localhost:8080/axis/TestClient.jws";  
  18.             Service service=new Service();  
  19.             Call call=null;  
  20.             call=(Call)service.createCall();  
  21.             call.setOperationName(new QName(endpoint,"getName"));  
  22.             call.setTargetEndpointAddress(new java.net.URL(endpoint));  
  23.             String ret=(String)call.invoke(new Object[]{"zhangsan"});  
  24.             System.out.println("return value is "+ret);  
  25.         } catch (Exception e) {  
  26.             // TODO Auto-generated catch block  
  27.             e.printStackTrace();  
  28.         }  
  29.     }  
  30.   
  31. }  

执行客户端的代码结果如下: 

 

总结:即时发布很简单,但是有很多弊端,假如你现在只有.class或者一个jar包,jws就不再能满足你的需求了,最重要的是即时发布不支持带包的类。 

2)定制发布的WebService 
  定制发布比即时发布更加繁琐和复杂,但是换来的是更大的灵活性。定制发布需要你自己编写一个WSDD(Web Service Deployment Descriptor)文件。 
a)服务器端代码: 
Java代码  收藏代码
  1. package com.wl.webservice.test;  
  2.   
  3. public class HelloWorldWsdd {  
  4.   
  5.     public String hello(String name){  
  6.         return "hello "+name;  
  7.     }  
  8. }  

这是一个带包的很简单的类,编译好之后将class文件拷贝到%Tomcat_HOME%\webapps\axis\WEB-INF\classes目录下

记得要拷贝class的包名,不然会报错

   b)接下来就是编写发布文件deploy.wsdd,在%TOMCAT_HOME%\webapps\axis\WEB-INF目录下建立这个文件并且在其中添加如下内容: 
Java代码  收藏代码
  1. <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">  
  2. <service name="HelloWorldWsdd" provider="java:RPC">  
  3. <parameter name="className" value="com.wl.webservice.test.HelloWorldWsdd"/>  
  4. <parameter name="allowedMethods" value="hello"/>  
  5. </service>  
  6. </deployment>   

这个wsdd文件是一个标准的XML文件,包含三个元素: 
<deployment>元素制定了wsdd所用的XML命名空间,是这个文件的根。 
<service>元素制定了一项SOAP服务。它有两个属性。name指定了这个服务的唯一标志符,provider指定了实现的语言及服务方式。一个wsdd文件可能有多个<service>元素。 
<parameter>指定了服务详细信息,是一组name/value对应的值。其中,clcssName指定了实现这个服务的类的名字,allowedMethods指定了这个服务暴露的方法列表。 
其中的com.wl.webservice.test是包的名称。 
打开cmd命令窗口,进入%Tomcat_HOME%\webapps\axis\WEB-INF目录下面输入如下命令: 
java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -l http://localhost:8080/axis/services/AdminService deploy.wsdd 
或者 
java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient deploy.wsdd 
执行结果如下: 

 
控制台返回Processing file deploy.wsdd 和Done processing 说明发布成功。 
并且会在同一级别目录下生成一个service-config.wsdd文件。 
发布成功之后,可以通过访问http://localhost:8080/axis/servlet/AxisServlet来查看所有的定制发布的服务。 
但是我在通过http://localhost:8080/axis/servlet/AxisServlet查看的时候,页面报一些错误: 

 
出错的原因是:我创建的这个HelloWorldWsdd服务是有包名称com.wl.webservice.test 
解决方法:在%Tomcat_HOME%\webapps\axis\WEB-INF\classes下面创建目录com,在com下创建目录wl,在wl下创建目录webservice,在webervice下创建目录test,最后把HelloWorldWsdd.class文件再 拷贝到test目录下面。 
重新http://localhost:8080/axis/servlet/AxisServlet查看结果: 

 


备注:发布deploy.wsdd可能会出现的问题: 
  I)axis所需要的Jar包如下: 

 
在部署deploy.wsdd的时候会报一个Unable to find required classes的信息,具体: 

 
但是影响不大,要是去掉这个警告信息的话,还需要一个Jar包mail.jar,从相关网站下载后拷贝到%Tomcat_HOME%\webapps\axis\WEB-INF\lib下面,再次重新部署deploy.wsdd就不会再报上面的警告信息了。 
参考:http://blog.csdn.net/foamflower/archive/2008/09/08/2897501.aspx 
  II)在部署deploy.wsdd的时候Tomcat服务器需要开启,否则会报异常信息: 

 


c)客户端代码如下: 
Java代码  收藏代码
  1. package com.wl.webservice.test;  
  2.   
  3. import javax.xml.namespace.QName;  
  4.   
  5. import org.apache.axis.client.Call;  
  6. import org.apache.axis.client.Service;  
  7.   
  8. public class HelloWorldWsddClient {  
  9.   
  10.     public static void main(String[]args){  
  11.           
  12.         try {  
  13.             String uri="http://localhost:8080/axis/services/HelloWorldWsdd";  
  14.             Service service=new Service();  
  15.             Call call=(Call)service.createCall();  
  16.             call.setTargetEndpointAddress(uri);  
  17.             call.setOperationName(new QName(uri,"hello"));  
  18.             String result=(String)call.invoke(new Object[]{"wanglei and zhangsan"});  
  19.             System.out.println("result="+result);  
  20.         } catch (Exception e) {  
  21.             // TODO Auto-generated catch block  
  22.             e.printStackTrace();  
  23.         }  
  24.     }  
  25. }  

执行客户端代码结果如下: 

 

3.取消发布一个WebService 
取消一个已经发布的WebService很简单,在发布的时候有个deploy.wsdd文件,那在取消发布的时候需要一个undeploy.wsdd文件即可。 
Java代码  收藏代码
  1. <undeployment xmlns="http://xml.apache.org/axis/wsdd/">  
  2.   <service name="HelloWorldWsdd" />  
  3. </undeployment>   

将这个文件拷贝到%Tomcat_HOME%\webapps\axis\WEB-INF目录下,然后再控制台输入命令: 
java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient undeploy.wsdd 运行结果: 





      本文转自yjflinchong 51CTO博客,原文链接:http://blog.51cto.com/yjflinchong/1164940,如需转载请自行联系原作者




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用 SAP WebIDE 创建 SAP Fiori Elements 应用
使用 SAP WebIDE 创建 SAP Fiori Elements 应用
8 0
IDEA创建JavaWeb项目
创建JavaWeb项目的步骤大致如下: 1. 创建JavaWeb项目之前所需要的条件 - 安装jdk - 安装服务器(如:tomcat) - 安装idea 2. 新建项目 New——>Project.
1635 0
java创建二叉树并实现非递归中序遍历二叉树
java创建二叉树并递归遍历二叉树前面已有讲解:http://www.cnblogs.com/lixiaolun/p/4658659.html。 在此基础上添加了非递归中序遍历二叉树: 二叉树类的代码: package binarytree; import linkedstack.
898 0
IntelliJ IDEA 12 创建Web项目 教程 超详细版
原文:IntelliJ IDEA 12 创建Web项目 教程 超详细版 IntelliJ IDEA 12 新版本发布 第一时间去官网看了下  黑色的主题 很给力 大体使用了下  对于一开始就是用eclipse的童鞋们 估计很难从eclipse中走出来 当然 我也很艰难的走在路上 ... 首先要说一点,在IntelliJ IDEA里面“new Project” 就相当于我们eclipse的“workspace”,而“new Module”才是创建一个工程。
1030 0
如何在SAP CRM里创建和消费Web service
Created by Wang, Jerry, last modified on Dec 19, 2014 The following steps demonstrates how to expose a function module as a web service in CRM.
1279 0
如何在Kubernetes里创建一个Nginx service
Jerry之前的文章如何在Kubernetes里创建一个Nginx应用,已经使用kubectl命令行创建了Pod,但是在kubernetes中,Pod的IP地址会随着Pod的重启而变化,因此用Pod的IP地址来访问我们部署的nginx应用不太合适。
1939 0
13262
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载