邪圣之异世逍遥游下载:webservice学习,个人经验,好文(转)

来源:百度文库 编辑:偶看新闻 时间:2024/05/10 23:45:38
WebService学习
(2010-11-15 20:26:00)转载
标签: 杂谈
分类: 编程
web service大致有三个实现规范:JAX-WS,JAX-RS(REST)和JAXM&SAAJ。具体的实现技术有jdk6,CXF,Axis和X-Fire。jdk6已经实现了JAX-WS的,尽量以这个为基础创建。
jdk6实现WebService详细参见http://wuhongyu.javaeye.com/blog/807470.
jdk6实现方法可能出现错误:
1。Exception in thread "main" java.lang.NullPointerException
at com.sun.xml.ws.server.EndpointFactory.getWsdlLocation(EndpointFactory.java:399)
服务类没有用@Webservice注解
2。runtime modeler error: Wrapper class is not found. Have you run APT to generate them?
网上资料说将JDK升级到1.6u17,但是我的版本是1.6u20也不行。
MyEclipse + JAX-WS创建B/S服务器的WebService服务器端实例步骤为:
第一步:新建web service project
第二步:编写服务接口和实现(不用@WebService注解)
第三步:new-other-web service,选择从实现类,修改Service name和Service port,生成Delegate代理,ServicePort类和wsdl文件,添加web.xml和jax-ws.xml信息
第四步:选择项目构建路径,new library-myeclipse,导入JAX-WS开头的两个相关lib。
第五步:发布项目,服务器启动之后,输入port路径(可以在wsdl文件中找到),能查看发布的 service API,点击wsdl连接可以访问到WSDL文件。至此,服务发布完成
详细参见http://horizonhyg.javaeye.com/blog/378046
客户端第一步:new-other-web service client向导生成客户端代码,输入wsdl文件的url,一路next。
第二步:生成的代码中会有一个Service连接类和Delegate接口,new 这个对象并取得这个接口方法,就可以调用服务端的API。
有几点要说明:
1。尽量不用jdk6的方案,这个要在服务器代码中加上@WebService注解,不方便。而且要用到java环境变量和命令行生成代码。
2。最好用BS,不用CS。即尽量用web service project,对原有系统也可以直接添加几个文件和库就可以了。
3。在BS服务端如果发布多个WebService,要手工修改web.xml文件,这个无法自动。
4。尽量修改Service name和Service port,不用默认的。以CustomerService接口-CustomerServiceImpl实现类为例,默认的服务器端命名为CustomerServiceImpl和CustomerServiceImplDelegate代理
,客户端命名为CustomerServiceImplService连接类和CustomerServiceImplDelegate接口。因此,最好将Service name由默认的CustomerServiceImplService改为CustomerService。
或者更好的方法,在模块与模块之间,划分四层结构。系统一核心|wsClient|wsServer|系统二核心,用外观模式,这样wsServer可以更好的命名,关联关系也清楚。
5。各种实现手段大同小异,产生的各种文件作用相似,只是命名不同。WebService的发布方式各有不同。
6。WebService的客户端文件体系庞大,在客户端基本上为每个方法建立两个类(参数和返回),并且每个实体类也要再映射一遍。速度也不是很快,传递一个字符串差不多两秒,需要持续关注,改进。