axis webservice tomcat 服务发布总结之相关流程和问题汇总

软件及版本:
os:win7 64bit    16G内存
IDE:intellij IDEA 2016.2.2 64 bit
数据库:Mysql 5.6.20    Navicat Premium11.0.17
相关软件:tomcat9.0.0   axis-bin-1_4

服务发布流程:
1 .IDEA: File → New → Project → Java → Java EE → Web Application → WebServices → “Generate sample server code ” 选中,Version”Apache Axis”,(连网可以选择download)Libraries”Use library” 选择 Axis/lib所在目录中的 axis.jar – wsdl4j-1.5.1.jar 共七个jar包。(src -sample – HelloWorld.java 以及 server-config.wsdd 中service 唯一标识了所需要发布的服务,添加一个服务在该文件中依照相关格式填写基本配置信息即可)
2.Run → “Defaults”右边“+”号 → Tomcat Server → Local → Name ”Proj_Name”(Application Server 为选择的tomcat,JRE为所安装的Default) → 红色“Fix “点击(Deployment 栏 添加一个war包) → Apply → ok
3.File → Project Structure → Artifacts → Fix(Add’Jax-WS’) → Apply → ok
4.发布成功:右上角栏目 选择 Tomcat猫:(Proj_Name) 点击 绿三角 运行,发布成功自动启动浏览器-localhost:8080 页面内容为 END 网页标题为 Title ,对应的相关设置在 web → index.jsp . 在浏览器中输入 localhost:8080/services 即可看到当前发布的所有服务 以wsdl 文件呈现。

<service name=”ServiceName” provider=”java:RPC”>
 <parameter name=”allowedMethods” value=”*”/> (发布当前类所有方法)
<parameter name=”className“ value=”example.HelloWorld”>(发布当前路径所指定的类)
<namespace>http://java/example/</namespace>(指定命名空间  根据类路径)
</service>

添加Maven (maven有坑,请慎重)
1. Proj_Name 右键 Add Frameworks Support → Maven → pom.xml 添加相应的Jar包 百度 maven repository 查找具体版本设置。
2.写好一个类进行测试运行时 出现以下问题,为maven的坑:
“warning java 源值 1.5 已过时,将在未来所有发行版中删除”
解决方案:
project Structure -Modules - Language Levels - Project default(自己实践的)

修改后IDEA将在源码jdk版本、目标jdk版本使用Maven中配置的jdk版本。

出现“找不到符号”之类问题:
解决方案: Build → Rebuild Project 编译成功!!!

在maven中写完相关类文件后,发布至tomcat上,需要将用maven下载的jar包,
添加至 out – artifacts – Proj_Name_war_exploded – WEB-INF – lib 下,如连接数据库的jar包,添加至lib下,否则在发布成功服务,客户端调用时会抛出 javaNULLPOINTERException,如果服务器端写了classNotFoundException异常检测,
则抛出ClassNotFoundException,如果所写的服务类 其中包含多个同名的方法和参数,请注意修改保证不重复,否则调用时会抛出no operation exception。

写完项目发布时,将Proj_Name_war_exploded (out/……/Proj_Name_war_exploded)放在服务器 tomcat文件夹下(需要提前安装匹配的jdk版本和系统管理员身份安装,版本不一致 报tomcat 非 微软服务,参考特定代码4,)的webapps下,然后更改为 Proj_Name。重新启动(mstsc.msc) APache tomcat,在浏览器输入:
服务器ip:8080(默认端口)/ Proj_Name/services 即可查看当前所发布的服务。

客户端调用服务时,需要相关的axis的jar包,但不需要sql连接之类的jar包。
首先根据服务的wsdl的url生成客户端代码,方便在客户端远程调用服务。
在客户端项目的src目录下 右键 webservices - Generate Java Code From wsdl
生成一下四个文件:
ExportDT –发布的服务映射
ExportDTService –发布的服务
ExportDTServiceLocator –服务的基本配置
ExportDTSoapBindingStub -封装了调用服务器端相关方法的方法(Call RPC)
然后 新建test 类调用相关服务:

// The service locator gets instances of the web service.
    ExportDTServiceLocator serviceLocator =
      new ExportDTServiceLocator();

    // get an instance of client stub by casting from interface:
    ExportDTSoapBindingStub exportDT =
      (ExportDTSoapBindingStub) serviceLocator.getExportDT();

    // examine the value we got back:
    String str = exportDT.getProjACD2XMLStringYesrterDay();

在进行服务调用时,请注意,传两个参数时,第二个参数无法从客户端传送至服务器端(参数为null),报nullPointerException 异常,同时返回值不能为定义的对象,必须是基本类型,如String/int等。(这是问题,不知为何!CXF可以直接传送对象,调用时先将对象转换为XML,客户端再将XML解析为对象)

**心得体会:测试时 可以选择服务器端为debugger 模式 客户端一起测试。
代码是调试出来的!!!**

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值