这几天用java开发一个webservice,搞死了。java果然很难侍候!

传说java搞webservice,有好几种途径(为什么不是一种?要搞这么多种,让人一听,头都大了。当然啦,生物多样性总是一种好事。正如我们不能只有普通话,不能只有汉字一样,多种方案,多样技术,会启迪人的思维)

1、XFire
eclipse默认提供的,我觉得最方便了。也用来做了一个HelloWorld,并且客户端调用测试通过。但当我添加引用了第三方的包之后,就不行了。可能是有冲突。
本来就是要对这个第三方的包进行封装和二次开发,不用怎么能行,只好放弃这个XFire。

2、Axis2
搞死了。
1)安装
首先要下载安装包和插件包。
所谓的安装包,只要作用是提供一个类似JAVA_HOME一样的AXIS2_HOME环境变量,好方便一些时候用得上,比如生成客户端代码。
插件包,用在eclipse上,方便创建和发布webservice。

其中这个插件包,版本要与eclipse对应。我的eclipse版本比较低,结果搞个1.6的放到eclipse的plugins,死活看不到效果。后来换成1.4可以了

那两个插件的安装方法,是ZIP文件解压,将里面的文件夹拷贝到eclipse的plugins下。如图:

有关安装的参考文章(这篇文章好像有误导,别尽信;网上其他一些教程,什么改名,添加link文件,应该是for linux的吧):
http://www.blogjava.net/tianchijiaozi/archive/2013/03/15/396452.html

2)发布
这里所谓的webservice,其实是建一个web project,就是一个网站了。然后再在其上建一个axis2 Service Archiver。具体方法:
右击该项目 - 新建 - 其他 - Axis2 Service Archiver,然后一路默认next,选好发布aar包的路径,最后得到一个aar包。

注意我们写的webservice必须正确无误,才可以一路next。我今天就遇到其中有个服务返回值为自定义类型,导致点击next无反应。自定义类型应该也可以的吧,可能要做一些什么配置,不过我现在还不知道。

另外,有关指定编译好的class文件所在文件夹,通常web service的话,应该在web-inf/…,如图


将这个aar包拷贝到tomcat下的 “\webapps\axis2\WEB-INF\services”,然后通过浏览器,输入类似 http://localhost:8080/axis2/services/HelloWorldService?wsdl这样的地址 测试是否部署成功

3)调用
仅仅用浏览器进行测试部署没有意义,webservice要调用成功才算。
我想用jsp来调用,但还没有成功。不过用java application成功了。
方法:
(1)生成客户端脚本
去AXIS2的解压目录下bin(%AXIS2_HOME%\bin)下执行下面语句
wsdl2java -uri http://localhost:8080/axis2/services/HelloWorldService?wsdl -p ws -s -o c:\temp
-p参数指定了生成的Java类的包名
-o参数指定了生成的一系列文件保存的根目录
在c:\temp\src\ws自动生成HelloWorldServiceStub.java

据说也可以通过插件方式:
IDE中选择New->other->Axis2 Code Generator来生成,但我总是报错。

(2)新建 java工程 Axis2Client
新建\Axis2Client\lib文件夹
将%AXIS2_HOME%\lib\ 下的jar包复制到\Axis2Client\lib,并加入工程引用中
将通过脚本生成的单一HelloWorldServiceStub.java文件 加入到src\ws下:建立一个“源文件夹”:src,然后在src下新建一个包ws,将HelloWorldServiceStub.java复制到这个包里。

(3)新建test.TestWs.java 主要代码如下:

package com.leftfist.test;import java.rmi.RemoteException;
import ws.HelloWorldServiceStub;public class TestWs {public static void main(String args[]) throws RemoteException  {
//  初始化Sub类HelloWorldServiceStub stub = new HelloWorldServiceStub();//  传递AxisServiceStub.ShowName对象,相关参数在这边赋值。HelloWorldServiceStub.SayHello command = new HelloWorldServiceStub.SayHello();command.setName("leftfist!!!");
//  取得返回值String name = stub.sayHello(command).get_return();System.out.println(name);}
}

附:HelloWorldService代码:

public class HelloWorldService {public String sayHello(String name) {return "Hello," + name;}
}

里面的代码初初一看,觉得很奇怪,我们哪有写ShowName这样的方法?但这就是java webservice的调用方式。真怪异。

然后鼠标右击这个test.TestWs.java,运行方式 - java 应用程序,可看到结果矣!

参考文章:
http://www.cnblogs.com/cx-zyq/p/3334236.html

4)aar依赖的包
利用插件发布aar的时候,如果一直狂按next,那么aar里面并没有我们要引用的一些包。这里估计有2种解决办法:
(1)利用插件发布的时候,界面好像有提示要引用哪些包,把要用的包选进去,应该可以,但我没有试

(2)看TOMCAT下的axis2,其实就是一个网站,跟我们做的其他站点一起并肩放在webapps/下。把我们webservice需要用到的包、classes拷贝到 axis2/web-inf下,也可以的。我就是用了这种方法

搞死了,靠。

java 开发webservice相关推荐

  1. 用Java 开发 WebService Axis简单实例

    用 Java 开发 WebService Axis 简单实例 在开发之前, 先了解一下AXIS,axis目前出现的2版本以其灵活性,快速开发工具的集成高于xfire而使用者居其上.用Eclipse开发 ...

  2. webservice java教程_[Java教程]JAVA开发Webservice——JAXB

    [Java教程]JAVA开发Webservice--JAXB 0 2016-01-19 17:00:04 JAXB(Java API for JAXB 可以实现Java对象与 下面来了解一下如何通过标 ...

  3. java开发webservice的几种方式

    为什么80%的码农都做不了架构师?>>>    webservice的应用已经越来越广泛了,下面介绍几种在Java体系中开发webservice的方式,相当于做个记录. 1.Axis ...

  4. Java开发WebService(使用Java-WS)

    前言: 初学Java,因为工作需要,直接跳到开发WebService.以前用.NET开发过WebService,对比一下,Java的WebService开发部署难度高了不止一个档次.网上的教程各式各异 ...

  5. java开发webservice简单实例_jsp实现的webservice的简单实例

    jsp webservice用到的比较少但是用到就是一个大东西了经常用过其它的api形式了而webservice用到不多,下面我们来看一篇关于jsp实现的webservice的简单实例吧,具体如下. ...

  6. WebService学习总结(3)——使用java JDK开发WebService

    一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) 二.使用JDK开发Web ...

  7. Java6上开发WebService

    Java6上开发WebService 2010-01-23 16:19:00 标签:Java6 WebService 休闲 职场 版权声明:原创作品,如需转载,请与作者联系.否则将追究法律责任. 近日 ...

  8. MyEclipse下XFire开发Webservice实例

    最近在研究JAVA开发Webservice,发现网络上比较流行的几种选择AXIS.XFire.CFX(XFire的下一代),前几天转了几篇关于这三种选择的比较的文章,对它们已经有了些概念.决定自己实践 ...

  9. WebService学习总结(三)——使用JDK开发WebService

    一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) 二.使用JDK开发Web ...

最新文章

  1. 批量obj格式直接转gltf
  2. 千亿美元市值的拼多多,真被高估了吗?
  3. Python面试中需要注意的几点事项!
  4. spring WebSocket详解
  5. AndroidAnnotations开发框架在Eclipse中的搭建和使用以及框架实现的原理
  6. 外包以小时计算金额的费用_2020年初级会计各大税种的计算公式,请收藏!
  7. 计算机win7无法安装,新机装不了Win7?照这个方法5分钟搞定!
  8. SAP BW顾问如何保持市场竞争力?
  9. 小程序css 如何引用图片,微信小程序实例:如何引入外部js的文件(图文)
  10. IDEA搭建POI导入导出Excel入门版
  11. 禁止acer care center开机自动启动
  12. 简单画布canvas的画法
  13. jQuery中的end()的用法与定义
  14. 乔布斯和盖茨的历史性对话(转录)
  15. 各个领域公开数据集下载(持续更新)
  16. 笔记本电脑屏幕当作扩展屏幕(一台PC给另一台PC当扩展屏 win10自带功能)
  17. 【PyTorch深度学习实践】08_Softmax分类器(多分类)
  18. 青西新区与航天科工二院合作 打造特色智慧城市
  19. 计算机知识技能答案,学生计算机知识技能赛参考题范围及答案.doc
  20. 2018年物联网大数据架构演进分析

热门文章

  1. QT 多线程 使用UI
  2. EDI 947仓库库存调整建议
  3. 计算机怎么看显卡配置,怎么查看电脑显卡配置 电脑显卡配置定义及查看方法介绍...
  4. UE4 使用UAssetManager进行资源的异步加载
  5. VMware出现虚拟机打不开的问题解决
  6. 7.三种Scriptlet
  7. 华为OJ(密码强度等级)
  8. 获得PE文件输入表和输出表
  9. java 数组 指针_java指针数组的使用
  10. 高并发性能/压力测试思路