- 浏览: 1199360 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (883)
- Spring (101)
- Swing (1)
- Mysql (21)
- Js (59)
- Jsp (2)
- Hibernate (19)
- Myeclipse (5)
- SqlServer 2000 (2)
- poi (15)
- Java (70)
- SSH (12)
- Html (47)
- Fusion Charts (1)
- C\C++ (2)
- 汇编 (36)
- Jquery (37)
- Struts2 (6)
- Ubuntu (16)
- powerDesinger (4)
- Jboss (3)
- JAX-RS (13)
- JAXB (5)
- JAX-WS (11)
- JMS (4)
- WebSocket (8)
- PHP (16)
- Flash (1)
- maven (3)
- Oracle (8)
- HttpClient (6)
- sqlserver (19)
- svn (5)
- Tomcat (3)
- Jdbc (3)
- EsayUi (11)
- 微信公众平台 (19)
- IIS (2)
- Freemarker (11)
- Comet (1)
- Spring MVC (85)
- JBoss Seam (3)
- 二维码 (9)
- Spring Security (4)
- Ehcache (3)
- Apache Shiro (7)
- jackson (16)
- JPA (8)
- jcaptcha (2)
- RSA (2)
- Ajax (6)
- 跟我学Shiro (0)
- Spring4 (19)
- 跟我学spring3 (0)
- css (32)
- excel (4)
- Filter (3)
- 微信公众帐号开发教程 (0)
- Android (6)
- log4j (6)
- 淘宝接口 (17)
- 支付集成 (3)
- 单点登录 (3)
- Html5 (27)
- 移动平台前端 (3)
- Linux (44)
- FusionCharts (27)
- Json Jackson Xml (5)
- 方培工作室-微信开发 (0)
- Apache与Tomcat与IIS整合 (10)
- Nginx (17)
- webService (2)
- apache (4)
- lucene (3)
- lodop (2)
- Shiro (3)
- zTree (2)
- ireport (12)
- Servlet3.0 (5)
- 前端美工 (19)
- AngularJS (1)
- C#开发微信门户及应用 (0)
- Shell (3)
- bat脚本 (16)
- Bootstrap (26)
- Less (10)
- photoshop (6)
- Redis (6)
- Mongodb (10)
- MyBatis (3)
- 数据结构 (0)
- 读写分离-主从复制 (0)
- JFinal (0)
- 百度地图api (3)
- hadoop-hbase-hive-spark (3)
- WebStorm (2)
- Quartz (5)
- ios (0)
- Mina (8)
- Android Studio (4)
- Ratchet教程 (0)
- 移动端重构系列 (1)
- cubic-bezier贝塞尔曲线CSS3动画工具 (1)
- nginx+tomcat+memcached集群 (0)
- 集群 (0)
- ZooKeeper (3)
- Dubbo (0)
- vpn (0)
- kafka (0)
- JVM垃圾回收机制 (0)
- 微信小程序 (0)
- Lua (0)
- Hystrix (0)
- Vue.js (0)
- mycat (0)
- Openresty (0)
- springBoot (0)
- 新分类 (0)
- guava (0)
- 大数据 (0)
- Sentinel (0)
最新评论
-
JackMacing:
中文怎么解决?
SpringMVC与iReport(JasperReports) 5.6整合开发实例 -
18335864773:
用pageoffice把.可以实现在线的文档操作.直接转pdf ...
转:使用jasperreport动态生成pdf,excel,html -
linhao0907:
推荐一款轻量开源的支付宝组件:https://github.c ...
关于Alipay支付宝接口(Java版) -
songronghu:
太好了,非常有用,谢谢分享~
Java ConcurrentModificationException 异常分析与解决方案 -
wzwahl36:
http://www.atool.org/json2javab ...
Java下利用Jackson进行JSON解析和序列化
在之前的介绍里,web service的发布都是通过调用:
方法来启动一个java内嵌的web容器来实现的。
这里要介绍一下怎么把生成的web service部署到一个web容器中去。
还是以之前的计算器的例子为例。首先我们用wsgen工具去生成部署所需要的所有部件:
运行此命令时,我得到了一个错误信息:
- The @javax.jws.WebService.name element cannot be used in with @javax.jws.WebService.endpointInterface element
意思是 name 属性和 endpointInterface 属性不能同时出现,只好把CalculatorImpl里的name属性先删除,回头查一下为什么会有这个错误。
运行完上面命令行后,我们就得到一些新文件:
- CalculatorImplService.wsdl
- CalculatorImplService_schema1.xsd
- Add.java
- AddResponse.java
- Multi.java
- MultiResponse.java
把他们拷到工程里去先,其中:
- 所有的java文件和到源码里去
- 新建一个wsdl目录,把wsdl文件和xsd文件放到此目录中去。
剩下的就是怎么提供一个web.xml了,使得对url的访问能被我们的web service实现类处理请求了。
下载:
以前一直都是基于JDK自带的api来实现的,下面就需要用到一些jax-ws提供的lib包了。所以需要先去下一份jax-ws的实现,例如我当前使用的2.2.5的下载地址是:
实现方式:
sun的jax-ws实现提供了两个类用来配置web容器的web.xml,实现从url到web service实现类的映射:
- 监听类:com.sun.xml.ws.transport.http.servlet.WSServletContextListener
- Servlet: com.sun.xml.ws.transport.http.servlet.WSServlet
其中WSServletContextListener又会去查找和web.xml在同一级目录下的另一个文件sun-jaxws.xml,整个过程的流程图大约为:
sun-jaxws.xml文件的schema可以在下载的jax-ws RI的docs目录下找着(sun-jaxws.xsd)。
这里直接给出calculator的web.xml和sun-jaxws.xml的一个实现:
- <?xml version="1.0" encoding="UTF-8"?>
- <endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"
- version="2.0">
- <endpoint name="calculator" implementation="test.CalculatorImpl"
- url-pattern="/calculator" />
- </endpoints>
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE web-app PUBLIC "-//Sun Microsystems,
- Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
- <web-app>
- <listener>
- <listener-class>
- com.sun.xml.ws.transport.http.servlet.WSServletContextListener
- </listener-class>
- </listener>
- <servlet>
- <servlet-name>calculator</servlet-name>
- <servlet-class>
- com.sun.xml.ws.transport.http.servlet.WSServlet
- </servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>calculator</servlet-name>
- <url-pattern>/calculator</url-pattern>
- </servlet-mapping>
- <session-config>
- <session-timeout>120</session-timeout>
- </session-config>
- </web-app>
按照上面的流程图就可以很清楚的理解了:
在初始化期间,WSServletContextListener会读取WEB-INF目录下的 sun-jaxws.xml和web.xml,将web service的实现类与某个url进行绑定,这个绑定是通过一个WSServlet类间接进行的。每次来一个请求后,WSServletContextListener就会进行拦截,根据请求的url,找到对应的web service的实现,调用其他方法。
依赖包
很显然,诸如 WSServletContextListener 和 WSServlet 类并不是java缺省自带的。这些类在下载的jax-ws RI的lib目录下的jar里,所以要想真正成功的运行这些web service,我们也需要把必需的依赖包加上,它们包括:
- gmbal-api-only.jar
- ha-api.jar
- jaxb-impl.jar
- jaxws-api.jar
- jaxws-rt.jar
- management-api.jar
- policy.jar
- stax-ex.jar
- streambuffer.jar
打包
打包就不具体介绍了,总之包的结构如下:
参考:http://www.mkyong.com/webservices/jax-ws/deploy-jax-ws-web-services-on-tomcat/
发表评论
-
Spring 3, Spring Web Services 2 & LDAP Security
2014-09-12 09:09 1599This year started on a good n ... -
Chapter 7. Securing your Web services with Spring-WS
2014-09-12 09:09 1845Chapter 7. Secur ... -
Spring的WebServiceTemplate访问WebService的方法及其本质原理
2014-09-02 11:12 897WebService客户端调用的本质就是将SAOP格式的XM ... -
WebService服务端开发
2014-09-02 11:05 1424概述 BDF中WebService模 ... -
JAX-WS开发webservice示例详解
2014-09-02 10:44 1755目录: 概述 实验环境 服务端的实现 客户端 ... -
Spring Webservice实现过程
2013-12-02 11:31 10551、创建service接口 package com. ... -
JAX-WS 学习三:进阶二(binding style和wsgen)
2012-09-13 18:36 625一、指定使用的Style和Use Wsdl中soa ... -
JAX-WS 学习三:进阶一(wsimport和TCP/IP monitor)
2012-09-12 22:37 752前两节中简单的介绍了一下基本的JAX-WS API的使用, ... -
JAX-WS 学习二:创建客户端
2012-09-12 22:37 635上一节中介绍了怎么基于JAX-WS的API创建服务端,这一节介 ... -
JAX-WS 学习一:创建服务接口
2012-09-12 22:37 586Java1.6中自带了JAX-WS API,使得我们可以很方便 ...
相关推荐
带有 JAX-RS 的 RESTful Web 服务 带有 JAX-RS 的基本 RESTful Web 服务 如何运行应用程序 传统上(需要 maven 和 wildfly) 下载野蝇 开始野蝇 $ WILDFLY_HOME/bin/standalone.sh & 使用 maven 部署 $ mvn ...
· 学习如何在各种环境下部署JAX-WS服务 不管是学生还是有经验的程序员,当你需要立即运用这些技术展开工作时,《Java Web服务:构建与运行》都是你需要的一本理想的简明指南。 内容截图 目录: 前言. ...
您也可以将Java Web容器嵌入到您的项目中,例如 ,并完成此操作。 不过,对于初学者来说,使用应用程序服务器可能更容易。 如何建立这个专案? 您可以使用其构建功能(在Eclipse中,右键单击该项目并选择Run As- >...
Apache CXF是一个开源的Service框架,它实现了JCP与Web Service中一些重要标准。CXF简化了构造,集成,面向服务架构(SOA)业务组件...CXF设计成可灵活部署到各种容器中包括Spring-based,JBI,SCA, Servlet和J2EE容器。
如何部署web应用 webApp提供者 如何部署第三方产品 部署展开形式的web应用 使用Jetty进行开发 如何使用Jetty进行开发 如何编写Jetty中的Handlers 使用构建工具 如何在Maven中使用Jetty 如何在Ant中使用Jetty Maven和...
6.13 JAX-WS 2.2 标准 6.14 JAX-RS 1.1标准 6.15 JAXB 2.2 标准 6.16 JAXR 1.0 标准 6.17 API 1.1标准 6.18 API 1.2 标准 6.19 JACC 1.4 标准 6.20 JASPIC 1.0 标准 6.21 JSR-45 标准 6.22 SJSTL 1.2 标准 6.23 ...
2.5.7. JAX-WS支持 2.6. 其他 2.6.1. 动态语言支持 2.6.2. 增强的测试支持 2.6.3. JMX 支持 2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到...
2.5.7. JAX-WS支持 2.6. 其他 2.6.1. 动态语言支持 2.6.2. 增强的测试支持 2.6.3. JMX 支持 2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到...
第二部分详细讲解了jsf ri、jta、jndi、rmi、jms、javamail、ejb 3的session bean、message driven bean、jpa、jax-ws 2、jaas等java ee知识,这部分知识以jsf+ejb 3+jpa整合开发为重点,通过使用netbeans ide工具...
5.2 登录到Web应用 175 5.2.1 问题 175 5.2.2 解决方案 175 5.2.3 工作原理 175 5.3 验证用户 179 5.3.1 问题 179 5.3.2 解决方案 180 5.3.3 工作原理 180 5.4 做出访问控制决策 190 5.4.1 问题...
5.2 登录到Web应用 175 5.2.1 问题 175 5.2.2 解决方案 175 5.2.3 工作原理 175 5.3 验证用户 179 5.3.1 问题 179 5.3.2 解决方案 180 5.3.3 工作原理 180 5.4 做出访问控制决策 190 5.4.1 问题...
1.2 什么是 Servlet 容器?...............................................................................................................................13 1.3 例子 .......................................
13 什么是Servlet容器?...............................................................................................................................13 例子...............................................