2019独角兽企业重金招聘Python工程师标准>>>

Axis支持三种web service的部署和开发,分别为:
1、Dynamic Invocation Interface(DII)
2、Dynamic Proxy方式
3、Stubs方式
其中:约定Axis_HOME为该TOMCAT_HOME\webapps\Axis目录
在eclipse环境下测试的时候,客户端都应该是web project.
一、编写DII(Dynamic Invocation Interface )方式web服务
1.编写服务端程序HelloClient
public class HelloClient { public String getName(String name) { return "hello "+name; } }

2、将源码拷贝到Axis_HOME下,重命名为 HelloClient.jws
3、访问连接http://localhost:8080/Axis/HelloClient.jws?wsdl,页面显示Axis自动生成的wsdl
4、编写访问服务的客户端 TestHelloClient.java
import org.apache.Axis.client.Call; import org.apache.Axis.client.Service; import javax.xml.namespace.QName; import javax.xml.rpc.ServiceException; import java.net.MalformedURLException; import java.rmi.RemoteException; public class SayHelloClient2 { public static void main(String[] args) { try { String endpoint = "http://localhost:8080/Axis/HelloClient.jws"; Service service = new Service(); Call call = null; call = (Call) service.createCall(); call.setOperationName(new QName( "http://localhost:8080/Axis/HelloClient.jws", "getName")); call.setTargetEndpointAddress (new java.net.URL(endpoint)); String ret = (String) call.invoke(new Object[] {"zhangsan"}); System.out.println("return value is " + ret); } catch (Exception ex) { ex.printStackTrace(); } } }

二、编写Dynamic Proxy方式访问服务
1、编写部署服务端程序,同上边DII方式,本次仍使用上边部署的HelloClient
2、编写代理接口
public interface HelloClientInterface extends java.rmi.Remote { public String getName(String name) throws java.rmi.RemoteException; }

3、编写并执行客户端程序TestHelloClient.java
import javax.xml.rpc.Service; import javax.xml.rpc.ServiceFactory; import java.net.URL; import javax.xml.namespace.QName; public class TestHelloClient { public static void main(String[] args) { try { String wsdlUrl = "http://localhost:8080/Axis/HelloClient.jws?wsdl"; String nameSpaceUri = "http://localhost:8080/Axis/HelloClient.jws"; String serviceName = "HelloClientService"; String portName = "HelloClient"; ServiceFactory serviceFactory = ServiceFactory.newInstance(); Service afService = serviceFactory.createService(new URL(wsdlUrl), new QName(nameSpaceUri, serviceName)); HelloClientInterface proxy = (HelloClientInterface) afService.getPort(new QName( nameSpaceUri, portName), HelloClientInterface.class); System.out.println ("return value is "+proxy.getName("john") ) ; }catch(Exception ex) { ex.printStackTrace() ; } } }

三、编写wsdd发布web服务,编写stub client访问web服务
1、编写服务端程序server,SayHello.java,编译server.SayHello.java
package server; public class SayHello { public String getName(String name) { return "hello "+name; } } 2.编写LogHandler.java import org.apache.Axis.AxisFault; import org.apache.Axis.Handler; import org.apache.Axis.MessageContext; import org.apache.Axis.handlers.BasicHandler; import java.util.Date; public class LogHandler extends BasicHandler { public void invoke (MessageContext msgContext) throws AxisFault { /** Log an access each time we get invoked. */ try { Handler serviceHandler = msgContext.getService(); Integer numAccesses = (Integer)serviceHandler.getOption("accesses"); if (numAccesses == null) numAccesses = new Integer(0); numAccesses = new Integer (numAccesses.intValue() + 1); Date date = new Date(); String result = date + ": service " + msgContext.getTargetService() + " accessed " + numAccesses + " time(s)."; serviceHandler.setOption ("accesses", numAccesses); System.out.println(result); } catch (Exception e) { throw AxisFault.makeFault(e); } } }

3、编写wsdd文件
deploy.wsdd <deployment xmlns= "http://xml.apache.org/Axis/wsdd/" xmlns:java= "http://xml.apache.org/Axis/wsdd/providers/java"> <handler name="print" type="java:LogHandler"/> <service name="sayhello" provider="java:RPC"> <requestFlow> <handler type="print"/> </requestFlow> <parameter name="className" value="server.SayHello"/> <parameter name="allowedMethods" value="*"/> </service> </deployment>

3、将编译后的文件拷贝到Axis_HOME/WEB-INF/classes下,如:D: \tomcat\webapps\Axis\WEB-INF\classes
4、发布服务:
java org.apache.Axis.client.AdminClient deploy.wsdd
5、生成client stub文件
a:方式1
将SayHello.java拷贝到Axis_HOME/下,重命名为SayHello.jws,
执行下面的命令生存client stub
java org.apache.Axis.wsdl.WSDL2Java -p client http://localhost:8080 /Axis/services/SayHello.jws?wsdl

b:方式2
执行如下命令生成SayHello.wsdl
java org.apache.Axis.wsdl.Java2WSDL -oSayHello.wsdl -lhttp://localhost:8080 /Axis/services/SayHello -nsayhello server.SayHello

执行如下命令生成client stub
java org.apache.Axis.wsdl.WSDL2Java SayHello.wsdl -p client

生成的stub client文件列表为:
1.SayHello.java
2.SayHelloService.java。
3.SayHelloServiceLocator.java
4.SayHelloSoapBindingStub.java
6、编写客户端程序,编译并执行
public class SayHelloClient { public static void main(String[] args) { try { SayHelloService service = new client. SayHelloServiceLocator(); client.SayHello_PortType client = service.getSayHello(); String retValue=client.getName("zhangsan"); System.out.println(retValue); } catch (Exception e) { System.err.println ("Execution failed. Exception: " + e); } } }

转载于:https://my.oschina.net/hairtail/blog/485272

axis1 web Service 环境部署相关推荐

  1. JAVA开发与运维(web生产环境部署)

    web生产环境部署,往往是分布式,和开发环境或者测试环境我们一般使用单机不同. 一.部署内容 1.后端服务 2.后台管理系统vue 3.小程序 二.所需要服务器 5台前端服务器 8台后端服务 三.所需 ...

  2. Mac下web自动化环境部署

    1.前提:安装python环境,文件可参考:https://www.cnblogs.com/nbnuan/p/9717881.html 2.浏览器很多,主流的浏览器有:ie,firefox,chrom ...

  3. Web Service/WCF 部署注意事项。

    1.不用新建应用程序池,新建网站的时候,会自动生成一个与Web Service/WCF 同名的应用程序池.这样的话,新建的Web Service/WCF会与该应用程序池很好的匹配. 2.只有一个IP的 ...

  4. 银光中国网免费Silverlight空间Web Service部署方法

    银光中国网为方便大家学习Silverlight技术,特别推出Silverlight免费空间服务.看到论坛上有不少开发人员询问在部署WCF或者Web Service应用时出现异常,无法部署成功,这里我做 ...

  5. IDEA 开发一个简单的 web service 项目,并打包部署到 Tomcat

    文章目录 实现的效果 一.创建 web service 项目 二.测试类运行 web service 服务端 三.IDEA 打包 web service 项目 四.web service 项目部署到 ...

  6. 使用Axis开发Web Service程序

    今天是感恩节,差点又要在公司加班了.好在Web Service程序并不是特别难搞,下午终于在eclipse下调通过了,正确产生了服务器端和客户端的Java代码,apache的东西的确很不错. 说道We ...

  7. .Net/C# 与 J2EE/Java Web Service 互操作完整实例

    http://www.cnblogs.com/Microshaoft/archive/2005/08/18/217213.html .Net 与 J2EE/Java Web Service 互操作完整 ...

  8. 在 MyEclipse 5.1GA 上使用 XFire 编写 Web Service

       开发环境     Sun Java 5+ Eclipse 3.2 +MyEclipse 5.0.0. 概述 本文介绍了使用MyEclipse Web Service来迅速开发和测试一个Hello ...

  9. WCF分布式开发必备知识(4):Web Service(转)

    今天继续我们的WCF分布式开发必备知识系列文章的第4节:Web Service.前3节我们分别介绍了MSMQ消息队列/.Net Remoting/Enterprise Services三个相关的技术. ...

最新文章

  1. AI打败外科医生:机器人做手术,你敢来一刀吗?
  2. 【markdown】图片的处理
  3. MySQL 5.7 安装指南
  4. dubbo-go v3 版本 go module 踩坑记
  5. Kali忘记登录密码——修改root密码
  6. mysql replace first_Java replaceFirst()方法
  7. Linux dd命令 复制(拷贝)文件,并对原文件进行转换
  8. 质量不同的球java编程_荐非常经典的java编程题全集-共50题(1-10)...
  9. PTA—求整数段和(C语言)
  10. oracle 修索引改空间_oracle 修改索引现有表空间
  11. 手撸一个 Router 框架(上):熟悉 APT
  12. LwIP 协议栈之 udp 协议解析
  13. java.sql.BatchUpdateException: Data truncation: Division by 0
  14. 全景Engine智能管理软件7.0-PLG模式全新上线
  15. L1和L2简单易懂的理解
  16. python T检验
  17. MHT代码阅读(1)
  18. 后ETC时代,年入近百亿元的千方科技如何玩转车路协同
  19. 什么是GML?GML例子
  20. dm8148 开发只boot启动参数vram=128简介

热门文章

  1. iOS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、v...
  2. 解决在VS(winform)程序中无法在调试时修改代码的问题(也就是“编辑并继续”功能无效)...
  3. java.lang.VerifyError
  4. 大数据+机器学习#x3D;天下无敌!
  5. 网络部分面试之路由协议
  6. Web技术栈中不可或缺的Linux技术
  7. 《Arduino开发实战指南:机器人卷》一2.1 数字I/O口的操作函数
  8. Hibernate关系映射 一对一双向外键关联@OneToOne Annotation方式
  9. 关于DateTime对象序列化为Json之后的若干问题
  10. 生态物流的变革效应:左边资源、右边货源