- 浏览: 121147 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
wuruxiantu:
http://localhost:8080/blog/uplo ...
mvnForum 一个开源的BBS搭建过程 -
shansheng:
第一个for循环,没看出来原始的和反编译后的区别嘛
java class反编译后的代码还原 -
hhujsj:
顶 对我做的项目很有帮组!!!
J2EE应用:定时器 -
iRoger:
不错,写的很仔细,为什么没人顶呢
J2EE应用:定时器 -
rain16881:
很好很强大啊..边看你这..边看自己的..十分钟就搞好了一个难 ...
java class反编译后的代码还原
作者:wjhdtx
摘自csdn
简单的webservice开发例子
Axis支持三种web service的部署和开发,分别为:
1、Dynamic Invocation Interface ( DII)
2、Stubs方式
3、Dynamic Proxy方式
二、编写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);
}
}
}
摘自csdn
简单的webservice开发例子
Axis支持三种web service的部署和开发,分别为:
1、Dynamic Invocation Interface ( DII)
2、Stubs方式
3、Dynamic Proxy方式
二、编写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);
}
}
}
发表评论
-
RPC与RMI的区别以及jax-rpc、jax-ws和 axis、xfire的联系和区别
2011-04-22 23:54 23121. RPC 不支持对象, 采用http协议 2. RMI支 ... -
网站如何集成支付宝!原来要给钱的
2010-09-11 14:00 1184文章来源:http://gavin-chen.iteye.co ... -
struts2类型转换
2010-07-10 23:58 1095struts2类型转换 文章来源:http://j ... -
在项目中集成Axis 1.x来开发Web Service
2009-06-01 17:25 1160在项目中集成Axis 1.x来开发Web Service 文 ... -
axis 传输 简单对象,复杂对象,List,Map等收藏
2009-05-12 15:12 1544axis 传输 简单对象,复杂对象,List,Map等收藏 来 ... -
showModalDialog()、showModelessDialog()方法使用详解
2009-04-13 14:50 825showModalDialog()、showModelessD ... -
javascriptのfunction之谜
2008-12-03 13:33 860详解new function(){}和functi ... -
Hibernate检索方式
2008-12-03 13:32 758大家知道,Java对象的生 ... -
Taglib 原理和实现之什么是Taglib
2008-12-03 13:30 7951、问题:Tag究竟是什么?如何实现一个Tag? 一个ta ... -
哀悼日,怎么样才能让网站变成黑白的
2008-12-03 13:29 8412008年5月19日 - 2008年5月21日 哀悼 ... -
javascript 动态创建表格:新增、删除行和单元格
2008-12-03 13:29 13802008-03-17 10:07 这段时间写了不少脚本,感觉蛮 ... -
中文乱码终极幻想
2008-12-03 13:22 891java中文编码[转] 开发java应用出现乱码是很常见的,毕 ... -
Web文件的ContentType类型大全
2008-12-03 13:14 721Web文件的ContentType类型大全 ".*& ... -
Session机制详解
2008-12-03 13:10 750作者:郎云鹏 2006-07-19 内容导航: Sessio ... -
用JDring包设置类似于 cron的日程提醒
2008-12-03 13:09 811用JDring包设置类似于 cron的日程提醒 发布时间: ... -
HTML表单元素覆盖样式元素问题及其补救之道
2008-12-03 13:08 791HTML表单元素覆盖样式元素问题及其补救之道 日期:2004: ... -
多种网页播放器代码及其参数含义
2008-12-03 13:08 1673[日期:2005-07-11] 来源: 作者: [字体:大 ... -
J2EE应用:定时器
2008-12-03 13:07 2498定时器(引用) 好多 ... -
Smartupload和commons-fileupload介绍与比较(ZT)
2008-12-03 13:06 1265WEB文件上传可能是网站建设中最常用的功能之一,我在项目开发中 ... -
JS正则表达式
2008-12-03 13:06 713来源:http://www.iteye.com/topic/3 ...
相关推荐
【标题】"XFire_WebService开发例子.zip" 提供了一个关于使用XFire框架构建Web服务的实际示例。这个压缩包包含了一个详细的文档,名为“XFire_WebService开发例子.docx”,该文档很可能是对如何利用XFire框架创建和...
XFire_WebService 开发 例子 详解 包含图解 详细的开发步骤
【标题】:“Webservice接口开发简单例子” 在IT行业中,Web Service是一种基于互联网的、用于应用程序之间进行交互的标准化通信方式。本示例将探讨如何开发一个简单的Web Service接口,以便不同系统间能够共享数据...
这是一个用cxf进行webservice开发的小例子,解决了no cxf bean等小问题,采用maven组织,接口可通过web发布,并带了测试demo。整个过程参考:http://developer.51cto.com/art/201205/333868.htm,大家可以继续完善
标题:“C# 开发WebService的小例子” 首先,我们需要了解C#语言,它是.NET框架的一部分,由微软开发,专为构建高效、类型安全的面向对象的应用程序。C#语法简洁,易于学习,特别适合开发Web服务。 描述:“基于VS...
注:SOAP协议(Simple Object Access Protocal,简单对象访问协议),它是一个基于XML的通讯协议用于分散和分布式环境下网络信息交换。在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标...
【标题】:“较完整的Webservice例子” 在IT领域,Web Service是一种基于开放标准(如XML、WSDL和SOAP)的,使得不同系统间能够通过网络进行互操作的技术。本资源提供了一个较为完整的Webservice实现案例,它可以...
标题中的“webservice接口例子”是指该资源包含一个或多个实际的WebService接口示例,可能涵盖了如何创建、调用以及处理响应等方面。这些例子可以帮助开发者更好地理解WebService的工作原理,以及如何在实际项目中...
Java WebService接口开发是将Java应用程序暴露为网络服务的一种方式,允许不同系统间的数据交换和交互。本案例将深入探讨如何使用Java实现Web服务的创建、发布和调用。 一、理解WebService WebService是一种基于...
Web服务(Web Service)是一种基于互联网的、采用标准的XML(Extensible Markup Language)来交换数据的应用...学习和实践这个例子,有助于深入理解Web服务的工作原理,对于从事Java Web开发的人员来说是非常有价值的。
标题“rad开发webservice的例子”表明我们将探讨如何使用Rational Application Developer (RAD) 这个集成开发环境来创建Web服务。RAD是IBM提供的一款强大的Java和Web应用程序开发工具,它集成了多种开发技术,包括对...
这个简单的例子展示了Java如何使用JAX-WS创建和消费Web服务。实际开发中,可能还需要处理异常、安全、性能优化等问题。此外,JAX-RS提供了一种更简洁的RESTful Web服务开发方式,适合JSON数据交换和非SOAP通信场景。...
你需要定义一个Java接口,然后使用@WebService注解标记该接口,实现接口中的方法以提供服务。 - WSDL生成:JAX-WS可以自动生成WSDL文件,描述服务的接口和消息格式,供客户端调用。 - Tomcat或Jetty等应用服务器:...
- 如何创建一个简单的Java接口并标记为@WebService。 - 如何编写服务实现类,实现服务接口。 - 了解并编写WSDL文件,定义服务接口和消息格式。 - 使用Axis2工具将服务打包成.aar文件,并部署到Axis2服务器上。 - ...
本示例"webservice小例子"旨在提供一个基础的Web服务接口开发与客户端调用的教程。下面我们将深入探讨Web服务的核心概念、工作原理以及如何创建和使用Web服务。 1. **Web服务核心概念**: - **SOAP(Simple Object...
【SOAP WebService简单例子】 SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在Web上交换结构化和类型化的信息。它允许服务提供者和消费者之间进行远程调用,使得分布式应用程序能够相互通信。在...
Java 开发 Web 服务完整例子 本文档主要讲述了 Java 开发 Web 服务的完整例子,包括使用 JDK 中的 Web 服务 API 实现 Web 服务,以及使用 XFire 工具来生成 Web 服务。 一、使用 JDK 中的 Web 服务 API 实现 Web ...
Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI...