在tomcat中部署webservice

来源:互联网 发布:反射 java 编辑:程序博客网 时间:2024/04/25 13:59
在tomcat中部署WEB SERVICE    
呵呵,花了一个下午总算搞定了,现在整理一下思路。  这是一个简单的WEB服务示例,客户端发送一个名字给服务器,服务器返回“hello + 名字”字符串。    
1. 下载jaxws-2_0.jar,地址https://jax-ws.dev.java.net/  这步把我害惨,后边的示例用到这个包中的类,但教材上没提到,结果部署到tomcat时总是提示出错,于是我先是翻遍了tomcat和jdk的类包,结果找不到对应的类,上百度搜,发现全是用axis来配置的,又跑到google上去搜,中文的网页都没提及,最后还是在国外论坛上找到答案,悲剧啊,浪费了这么多时间。这也是我写这边教程的原因了,没人指点,摸着石头过河就是杯具。  
2. 在tomcat webapps目录下新建一个ws目录,在下面新建一个WEB-INF目录,WEB-INF目录下分别创建classes和lib目录。  
3. 将第1步下载的jar包解压,把lib目录下的所有文件拷到第2步创建的lib目录下  
4. 在classes目录下创建一个新目录helloworld  
5. 在helloworld目录下创建SEI(Service Endpoint Interface,即服务端点接口,其实就一加了注解的接口,只不过WS中喜欢这么叫而已),内容如下:    
//HelloWorld.java  
package helloworld;    
import javax.jws.*;    
@WebService  
public interface HelloWorld {   
@WebMethod 
String hello(String name);  
}    
6. 创建SIB(Service Implementation Bean,即服务实现Bean,也是WS中的习惯叫法)    
//HelloWorldImpl.java  
package helloworld;    import javax.jws.*;    
@WebService(endpointInterface = "helloworld.HelloWorld")  
public class HelloWorldImpl implements HelloWorld {   
public String hello(String name) {    return "Hello, " + name;   }  
}    
7. 编译,进入cmd,切到classes目录,javac helloworld/*.java  
8. 生成JAX-B工件(Artifacts),这一步会在helloworld目录下生成一个jaxws目录,wsgen -cp . helloworld.HelloWorldImpl  
9. 在WEB-INF新建web.xml,配置如下:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/javaee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  version="3.0">    <servlet> <servlet-name>HelloWorldWS</servlet-name> <servlet-class>  com.sun.xml.ws.transport.http.servlet.WSServlet </servlet-class></servlet><servlet-mapping> <servlet-name>HelloWorldWS</servlet-name> <url-pattern>/helloworld</url-pattern></servlet-mapping>
<listener> <listener-class>  com.sun.xml.ws.transport.http.servlet.WSServletContextListener </listener-class></listener>
</web-app>
其中listener用来解析sun-jaxws.xml文件。10. 再创建sun-jaxws.xml,这个文件提供一个WEB服务端点,用来连接WSServlet实例和服务实现类。
<?xml version="1.0" encoding="UTF-8"?><endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0"> <endpoint   name="HelloWorldWS"  implementation="helloworld.HelloWorldImpl"  url-pattern="/helloworld"/></endpoints>
11. 这样,服务器端已经完成,启动tomcat,在浏览器中输入http://localhost:8080/ws/helloworld?wsdl就可以看到WSDL文件了    12. 接下来写一个客户端测试一下服务  
13. 首先,用wsimport生成客户端所需工件,wsimport -keep -p client http://localhost:8080/ws/helloworld?wsdl  
14. 在上一步生成的client目录下新建Client.java文件    
package client;    
public class Client {   
public static void main(String[] args) {    
HelloWorldImplService service = new HelloWorldImplService();    
HelloWorld port = service.getHelloWorldImplPort();        
System.out.println(port.hello("老马"));   
}  
}    
15. 编译javac client.Client.java,运行java client.Client。可以看到屏幕上显示Hello, 老马  
16. 呼呼,总算写完了,写教程果然比写代码累。。。  
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 在考试中心补不了四级成绩怎么办 微信登录密码不记得了怎么办 欠农民工工资不给怎么办老板说没钱 国外期刊催问稿件不理睬怎么办 老公离不开老婆也离不开小三怎么办 出轨被老婆发现还和小三联系怎么办 老公出轨后回家老婆不想原谅怎么办 小三和原配打架都住院了怎么办 毕业太多年查不到学历认证怎么办 没有做税种核定开了票怎么办 在学信网上查不到学历信息怎么办 学信网手机号换了密码忘了怎么办 学信网手机号换了密码也忘了怎么办 学信网上学习形式是星号怎么办 新手机号已被注册微店买家怎么办 微信号被冻结了里面的钱怎么办 不懂公司产品却要接待老外怎么办 上菜时发现桌面摆不下新菜怎么办 超市买到过期产品商家不赔尝怎么办 皇帝成长计划2俘虏的士兵怎么办 晚上楼上有挪桌子的声音怎么办 金灶茶具出故障码e7怎么办 起亚k2灯泡掉进大灯总成怎么办 衣服上拆过线的针孔怎么办 驾考科目二坡道定点熄火怎么办 穿着超短裤感觉要漏屁股怎么办 台式电脑开机后无法进入系统怎么办 产后两年了肚子肥胖松弛怎么办 在作文中写上自己的名字怎么办 外出玩耍时迷路了你会怎么办 外出玩耍时孩子总喜欢乱跑怎么办? 如果真的物价高的受不了怎么办 每晚要5次真的受不了怎么办 五年级的学生钢笔字写不好怎么办 全麻醉药过后让人产生幻觉怎么办? 网贷小象优品上被别人冒用了怎么办 当你和老人产生冲突时该怎么办 百度网盘会员到期后容量怎么办 一个人不停的给你发视频聊天怎么办 被谋杀后的身后事应该怎么办 社保交了五年被单位辞退怎么办