axis1 web Service 环境部署
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 环境部署相关推荐
- JAVA开发与运维(web生产环境部署)
web生产环境部署,往往是分布式,和开发环境或者测试环境我们一般使用单机不同. 一.部署内容 1.后端服务 2.后台管理系统vue 3.小程序 二.所需要服务器 5台前端服务器 8台后端服务 三.所需 ...
- Mac下web自动化环境部署
1.前提:安装python环境,文件可参考:https://www.cnblogs.com/nbnuan/p/9717881.html 2.浏览器很多,主流的浏览器有:ie,firefox,chrom ...
- Web Service/WCF 部署注意事项。
1.不用新建应用程序池,新建网站的时候,会自动生成一个与Web Service/WCF 同名的应用程序池.这样的话,新建的Web Service/WCF会与该应用程序池很好的匹配. 2.只有一个IP的 ...
- 银光中国网免费Silverlight空间Web Service部署方法
银光中国网为方便大家学习Silverlight技术,特别推出Silverlight免费空间服务.看到论坛上有不少开发人员询问在部署WCF或者Web Service应用时出现异常,无法部署成功,这里我做 ...
- IDEA 开发一个简单的 web service 项目,并打包部署到 Tomcat
文章目录 实现的效果 一.创建 web service 项目 二.测试类运行 web service 服务端 三.IDEA 打包 web service 项目 四.web service 项目部署到 ...
- 使用Axis开发Web Service程序
今天是感恩节,差点又要在公司加班了.好在Web Service程序并不是特别难搞,下午终于在eclipse下调通过了,正确产生了服务器端和客户端的Java代码,apache的东西的确很不错. 说道We ...
- .Net/C# 与 J2EE/Java Web Service 互操作完整实例
http://www.cnblogs.com/Microshaoft/archive/2005/08/18/217213.html .Net 与 J2EE/Java Web Service 互操作完整 ...
- 在 MyEclipse 5.1GA 上使用 XFire 编写 Web Service
开发环境 Sun Java 5+ Eclipse 3.2 +MyEclipse 5.0.0. 概述 本文介绍了使用MyEclipse Web Service来迅速开发和测试一个Hello ...
- WCF分布式开发必备知识(4):Web Service(转)
今天继续我们的WCF分布式开发必备知识系列文章的第4节:Web Service.前3节我们分别介绍了MSMQ消息队列/.Net Remoting/Enterprise Services三个相关的技术. ...
最新文章
- AI打败外科医生:机器人做手术,你敢来一刀吗?
- 【markdown】图片的处理
- MySQL 5.7 安装指南
- dubbo-go v3 版本 go module 踩坑记
- Kali忘记登录密码——修改root密码
- mysql replace first_Java replaceFirst()方法
- Linux dd命令 复制(拷贝)文件,并对原文件进行转换
- 质量不同的球java编程_荐非常经典的java编程题全集-共50题(1-10)...
- PTA—求整数段和(C语言)
- oracle 修索引改空间_oracle 修改索引现有表空间
- 手撸一个 Router 框架(上):熟悉 APT
- LwIP 协议栈之 udp 协议解析
- java.sql.BatchUpdateException: Data truncation: Division by 0
- 全景Engine智能管理软件7.0-PLG模式全新上线
- L1和L2简单易懂的理解
- python T检验
- MHT代码阅读(1)
- 后ETC时代,年入近百亿元的千方科技如何玩转车路协同
- 什么是GML?GML例子
- dm8148 开发只boot启动参数vram=128简介
热门文章
- iOS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、v...
- 解决在VS(winform)程序中无法在调试时修改代码的问题(也就是“编辑并继续”功能无效)...
- java.lang.VerifyError
- 大数据+机器学习#x3D;天下无敌!
- 网络部分面试之路由协议
- Web技术栈中不可或缺的Linux技术
- 《Arduino开发实战指南:机器人卷》一2.1 数字I/O口的操作函数
- Hibernate关系映射 一对一双向外键关联@OneToOne Annotation方式
- 关于DateTime对象序列化为Json之后的若干问题
- 生态物流的变革效应:左边资源、右边货源