`
smartzxy
  • 浏览: 196079 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

将铲子朝向JAX-WS

阅读更多

       跟随《web services 教程》的章节,本来该研究JAX-RPC了,也基本看懂了JAX-RPC的代码,可还是在想要动手实验的时候碰壁了:我下载的WSDP2.0和教程的内容不配套,如果直接把提供的war文件塞Tomcat里部署报错,而手工编还缺少了一些工具。我也懒得再去找了,主要是看到了IBM上一篇比较JAX-RPC和JAX-WS的文章,还是换手JAX-WS吧,而且我下的jwstutorial2.0正好有JAX-WS的入门教程。

       初次看JAX-WS的代码有种似曾相识的感觉,一想原来和之前看过的CXF(隐约感觉是基于JAX-WS或是有某种联系的)和JUnit4的代码类似,都是基于annotations的。开发 JAX-WS的流程和RPC的差不多:

1、编写服务的执行类代码

2、编译执行类的代码

3、使用wsgen工具生成部署服务所必须的artifacts

4、把所有相关文件打包成一个war文件

5、部署这个war文件。类文件tie(用来和客户端通信)会由Application Server在部署服务时自动生成

6、编写客户端代码

7、使用wsimport生成并编译stub文件

8、编译客户端代码

9、运行客户端

        我没有先急着研究代码,而是决定先用example提供的代码部署一下试试。果然问题暴露了:使用ant编译时报错了!

执行ant:
D:\jwstutorial20\examples\jaxws\helloservice>asant build
Buildfile: build.xml

javaee-home-test:

init:

prepare:
[echo] Creating the required directories....

compile-service:
[echo] Compiling the server-side source code....
[javac] Compiling 1 source file to D:\jwstutorial20\examples\jaxws\helloservice\build

BUILD FAILED
D:\jwstutorial20\examples\jaxws\common\targets.xml:99: You are running on JDK6 w
hich comes with JAX-WS 2.0 API, but this tool requires JAX-WS 2.1 API. Use the e
ndorsed standards override mechanism (http://java.sun.com/javase/6/docs/technote
s/guides/standards/), or set xendorsed="true" on <wsgen>.

Total time: 3 seconds
 

       郁闷怎末1.6的JDK竟然没包括2.1的JAX-WS,于是只能根据提示,找到common文件夹(jaxws文件夹里的)里的targets.xml文件,在里面的<wsgen>元素里加入属性:xendorsed="true"。再ant,终于sucessful了。将ant create-war生成的war文件部署到jee5的服务器里,正常!由于没有编译客户端,就直接用服务器调试服务,返回值正常!

 

P.S.:其实我最初尝试的是提示的第一个方案:用新的jar包替代jdk里的旧版本。可是Google上找了半天,各大英文的java社区都逛了,也没找到个真正能解决问题的方案。各大社区的基本思路是,在jre的lib文件夹下新建一个endorsed文件夹,把JAX-WS2.1的lib里的新版jar包放进去(我怕麻烦,都塞进去了也没用)即可。

 

 

 

P.S.2:后来上网查了资料发现JDK6的update4以后的版本都包含JAX-WS2.1了,可为什么我使用:wsgen -version查询到的版本还是2.0的呢?折腾了大白天才发现:没更新环境变量!重新指向以后发现果然已经是2.1版的了。可这时候使用:asant build还是提示版本为2.0,不知为什么了~但直接用wsgen -d build -s build -classpath helloservice.endpoint.Hello却是成功的,之后的asant create-war也可以成功。

 

 

P.S.3:找到为什么asant指认的版本有误了,因为它的属性文件是关联到JEE的SDK的,而JEE的SDK在安装时已经固定指向了旧版的JDK,所以改了环境变量asant出来的版本还是旧的。可改了SDK的指向后,更麻烦的问题冒出来了,asant本来能成功的命令都出错了:

执行asant build:
Buildfile: build.xml

BUILD FAILED
F:\jwstutorial20\examples\jaxws\simpleclient\build.xml:5: The following error oc
curred while executing this line:
F:\jwstutorial20\examples\jaxws\common\targets.xml:26: taskdef A class needed by
class com.sun.tools.ws.ant.WsImport cannot be found: org/apache/tools/ant/Dynam
icConfigurator

Total time: 1 second

 

 

P.S.4:找到了最终的解决办法!重新把JAVA_HOME指向我的jdk6U3,修改我的P.S.1里提到的endorsed文件夹,里面只能塞两个包:jaxb-api.jar和jaxws-api.jar。一切正常了,真爽!于是想起最近经常看到的一句话: web 服务的原理不难, 难就难在这个配置上了。

 

  • jwstutorial20.zip (2.3 MB)
  • 描述: JAX-WS的入门文档,含实例代码。
  • 下载次数: 378
3
3
分享到:
评论

相关推荐

    jax-ws webservice demo

    基于jax-ws 实现的web service client和server端的demo程序。 注:如果使用的是 myeclipse 时 server 部署到tomcat 启动的时候会报错 解决办法:找到myeclipse安装目录下的 plugins 目录里 查找 webservices-rt.jar,...

    JAX-WS自学笔记

    JAX-WS自学笔记 本人自学JAX-WS笔记和简单例子,文档标题结构如下: JAX-WS使用教程 1、JAX-WS概述 2、创建Web Service 2.1 从java开始 2.1.1 运行wsgen 2.1.2 生成的WSDL和XSD 2.1.3 目录结构 2.2 从WSDL...

    Jax-ws所需要的JAR包

    亲测可用,Jax-ws所需要的JAR包,拷贝到tomcat安装路径的lib里,实现了webservice发布到tomcat,赞!

    MyEclipse8_0中使用 JAX-WS 部署 WebService 实例

    MyEclipse8_0中使用 JAX-WS 部署 WebService 实例 - 外衣 - 博客频道 - CSDN_NET.mht

    JAX-WS 2.2 RI所有相关jar包

    JAX-WS 2.2 RI 所包含的JAR包集合,包含25个JAR包,列表如下: FastInoset.jar gmbal-api-only.jar ha-api.jar javax.annotation.jar javax.mail_1.4.jar jaxb-api.jar jaxb-impl.jar jaxb-xjc.jar jaxws-api...

    metro-jax-ws-master

    The Java API for XML Web Services (JAX-WS) is a Java programming language API for creating web services, particularly SOAP services. JAX-WS is one of the Java XML programming APIs. It's a part of the ...

    webService部署tomcat需要的jax-ws jar包

    webService部署tomcat需要的jax-ws 的完整jar包

    JAX-WS_WebService.rar

    JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用,JAX-WS方式开发和部署webservice应用

    JAX-WS2.0 API

    JAX-WS2.0 API

    Jax-WS 简单实例

    Jax-WS的简单实例 Jax-WS的简单实例

    jax-rs jax-ws所需包,亲测可用

    javax.xml.ws.Service 报错需要的包,亲测可以用,直接下载在ide里buildpath一下就可以,四个jar包 ,整合了其他的jar所以配置简单

    jax-ws webservice简单demo

    jax-ws webservice完整demo,包含所有jax-ws 2.2jar包。

    JAX-WS开发的文件生成与部署相关全视频过程

    如果基于一个JAX-WS进行WebService开发,有很多教程,但是具体怎么更自动地生成一些文件,实现客户端与服务端的交互,都讲得不大清楚,为了让大家更方便地部署,我将服务端、客户端文件的生成与部署全过程以及测试...

    使用JAX-WS(JWS)发布WebService

    使用JAX-WS(JWS)发布WebService 使用myeclipse开发java的webservice的两种方式 方式一: (此方式只能作为调试,有以下bug:jdk1.6u17?以下编译器不支持以Endpoint.publish方式发布document方式的soap,必须在...

    JAX-WS 2.2 完整jar包

    JAX-WS 2.2 RI 所包含的JAR包集合,包含25个JAR包,列表如下: FastInoset.jar gmbal-api-only.jar ha-api.jar javax.annotation.jar javax.mail_1.4.jar jaxb-api.jar jaxb-impl.jar jaxb-xjc.jar jaxws-api...

    jax-ws 方式发布web Service 后台用Hibernate实现,前端.NET通过引用服务方式实现

    rar中包含整个项目的源码和数据库生成脚本,采用jax-ws发布Web Service服务,支持java客户端和.Net客户端调用,数据库采用oracle10g,里面有创建数据库脚本文件createTable_Oracle10g.sql,由于Hibernate映射表中会...

    JAX-WS SOAP header设值

    NULL 博文链接:https://iamliming.iteye.com/blog/1399257

Global site tag (gtag.js) - Google Analytics