- 浏览: 51050 次
- 性别:
- 来自: 北京
最新评论
-
lqwforever:
不错,支持一下
redhat linux卸载自带的Java1.4.2安装JDK6 -
liumiao2011:
keepgoing 写道java代码也可以格式化还是只能格式化 ...
让Editplus自动格式化js、css、html。。。 -
keepgoing:
java代码也可以格式化还是只能格式化HTML/CSS、js代 ...
让Editplus自动格式化js、css、html。。。
这两天由于工作需要,需要使用Axis2组件,上网搜了好多资料,发现看起来都很吃力,还是同事小虞同学总结的比较好,让我对Axis2有了一些入门级别的了解。现在我将小虞同学总结的内容二次加工分享给大家。
1.首先什么是Web Service?
当你编写程序时遇到一个情况:你的应用程序需要调用一个远程程序的方法,或一个远程的应用程序需要调用你的应用程序的方法时,就需要使用Web Service。我们一般把Web Service看成这个提供服务的方法,于是我们说“我调他的Web Service”或“他调我的Web Service”。其实Web Service是一套标准,它定义了应用程序如何在互联网上实现互操作。所以“我调他的Web Service”的意思是我是客户端,他是服务器端,反之亦然。你可以用任何语言写Web Service,只要双方遵守共同的标准就行。
2.axis2是干啥的?
Axis2是实现Web Service的一种技术框架(架构)。肿么说呢,他就是一些Java类和配置文件,其他的我也不知道了。总之你去网上下载一个axis2.war文件,然后把它部署到Tomcat下,启动Tomcat,就可以在浏览器里访问它了。你可能会说:“这样的话axis2不就是一个很普通的Web应用吗”。对,它是一个Web应用,这个应用默认提供了一个Service(Web Service的服务器端)叫Version。
我们可以看到这个默认的服务端名是Version,而getVersion是服务提供的方法。点击服务名可以看到有关该服务的描述。
一个服务器端其实就是WEB-INF/services/目录下的一个aar文件而已。所以以后咱们写服务器端只需要写一个aar文件放到WEB-INF/services/目录下即可。
这时候你可能会问:这和我自己的程序没关系啊,难道我必须得在axis2这个应用下写我自己的应用吗?不用担心后面我会讲如何把axis2整合到你的应用下。
package com.neusoft.axis2demo.services;
import com.neusoft.axis2demo.common.AxisServiceResponseInfo;
public AxisServiceResponseInfo nameConvertToContext(
AxisClientRequestInfo clientrequest) {
System.out.println("进入服务器端!");
AxisServiceResponseInfo axisServiceresponseinfo = new AxisServiceResponseInfo();
String name = clientrequest.getName();
if (name.equals("红豆")) {
axisServiceresponseinfo.setPoemcontent("红豆生南国,春来发几枝?愿君多采撷,此物最相思!");
} else if (name.equals("无题")) {
axisServiceresponseinfo.setPoemcontent("相见时难别亦难,东风无力百花残。春蚕到死丝方尽,蜡炬成灰泪始干。"
+ "晓镜但愁云鬓改,夜吟应觉月光寒。蓬山此去无多路,青鸟殷勤为探看。");
} else if (name.equals("无名诗词"))
axisServiceresponseinfo.setPoemcontent("繁星烁闪浩月天,恰似嫦娥舞翩翩.可怜吴刚空对酒,相思泪洒孤枕边");
else if (name.equals("草")) {
axisServiceresponseinfo.setPoemcontent("离离原上草 一岁一枯荣. 野火烧不尽 春风吹又生.");
} else {
axisServiceresponseinfo.setPoemcontent("对不起,你要找的诗词没有存储!");
}
return axisServiceresponseinfo;
}
}
package com.neusoft.axis2demo.common;
{
private String name;
{
return name;
}
{
this.name = name;
}
}
{
private String poemcontent;
{
return poemcontent;
}
public void setPoemcontent(String poemcontent)
{
this.poemcontent = poemcontent;
}
}
下面是解析该服务器类AxisDemoService的services.xml文件,该文件的内容如下:
<service name="Axis2Demo">
<parameter name="ServiceClass" locked="false">
com.neusoft.axis2demo.services.AxisDemoService
</parameter>
<operation name="nameConvertToContext">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</operation>
</service>
服务器类AxisDemoService中有几个方法就需要配置几个<operation></operation>。nameConvertToContext为AxisDemoService类中的方法。
目录结构如下:
首先我们不可能在我们的应用程序中直接调远程的方法,因为我们的Java编译器会因为找不到该方法而报错。所以我们想要调用一个我们本地工程没有的方法,而且还不让Java编译器报错,使用的肯定是Java的反射机制!
请下载Axis2_Codegen_Wizard,我用的是1.3.0版本。
在此之前请在浏览器访问刚才的服务器的描述文件,访问方法是刚才讲过的先访问http://localhost:8088/axis2,然后点击services,最后点击刚才的服务名。然后保存描述服务的网页(是个xml文件),保存在任意位置。
最后把保存后的文件后缀名改成wsdl,我们就用Axis2_Codegen_Wizard通过这个wsdl文件去生成代码。
现在回到Axis2_Codegen_Wizard,下载好后,把下载好的代码生成工具Axis2_Codegen_Wizard拷贝到eclipse下的plugins下。
以我机器为例拷贝到D:\eclipse3.2\plugins里,然后删除D:\eclipse3.2\configuration下的org.eclipse.update文件夹里的内容或者在eclipse的快捷方式里加上-clean以使插件生效。然后重启eclipse,选择“File->New->Other”可以看到如下的界面。
生成代码的具体步骤如下: 选择菜单“File->New->Other”,从对话框中选取“Axis2 Wizards”下面的“Axis2 Code Generator”,点next。
然后选择刚才保存的wsdl文件,点next。
注意,在图中选中custom和Generate Both with all classes for every elements on Shemas。很重要!
在Output Path这项选中工程的根目录作为这些自动生成代码的目录。
然后点击 finish 完成代码生成工作.下图为生成代码后的工程目录结构。
我标记的都是生成的文件。
下面咱们自己只需要写一点程序就可以调用远程的方法了。
下面写一个Test类,去调用远程的方法。
TestAxis2Demo.java
package com.neusoft.axis2demo.test;
import com.neusoft.axis2demo.common.xsd.AxisClientRequestInfo;
import com.neusoft.axis2demo.common.xsd.AxisServiceResponseInfo;
import com.neusoft.axis2demo.services.NameConvertToContext;
import com.neusoft.axis2demo.services.NameConvertToContextResponse;
public class TestAxis2Demo {
{
//axis2demostub是方法调度器
Axis2DemoStub axis2demostub = new Axis2DemoStub();
//nameConvertToContext是方法
NameConvertToContext nameConvertToContex = new NameConvertToContext();
//nameConvertToContextResponse是方法的执行结果
NameConvertToContextResponse nameConvertToContextResponse = new NameConvertToContextResponse();
//axisClientRequestInfo是方法的参数
AxisClientRequestInfo axisClientRequestInfo = new AxisClientRequestInfo();
//axisServiceResponseInfo是方法的返回值(方法的返回值.get_return())
AxisServiceResponseInfo axisServiceResponseInfo = new AxisServiceResponseInfo();
//给方法的参数添加上内容
axisClientRequestInfo.setName("无名诗词");
//给方法添加上参数
nameConvertToContex.setClientrequest(axisClientRequestInfo);
//执行方法
nameConvertToContextResponse = axis2demostub.nameConvertToContext(nameConvertToContex);
//得到返回值
axisServiceResponseInfo = nameConvertToContextResponse.get_return();
String poemcontent = axisServiceResponseInfo.getPoemcontent();
System.out.println("您输入的诗词题目是===="+axisClientRequestInfo.getName());
System.out.println("下边是根据您所输入的诗词的题目从服务器端返回的诗词内容!");
System.out.println(poemcontent);
}
下边我们只要把Tomcat目录下的\webapps\axis2下的内容copy到我们现有eclipse工程的应用目录下(这里我的web应用是D:\eclipse3.2\workspace\Axis2Demo\WebContext)就可以把刚才的Web Service和我们现有的工程集成一起了。
写这个总结真是累死我了,回去的车都少了。希望能给大家提供帮助,欢迎高手指点。
发表评论
文章已被作者锁定,不允许评论。
-
JSP禁用缓存常用方法
2013-05-05 12:59 6041.客户端缓存要在<head>中加入类似如 ... -
tomcat和jdk在linux下打包部署
2013-04-20 21:10 7931.找一个安装好的linux版本的jdk,把安装后的目录打 ... -
Oracle 11G在用EXP 导出时,空表不能导出的解决方法(ORA-01455)
2013-02-27 14:00 75011G中有个新特性,当表无数据时,不分配segment,以节 ... -
Oracle rac使用序列需要注意的地方
2012-12-12 00:11 901首先一个序列的定义如下 -- Create seque ... -
[转]Java中static、final用法小结
2012-09-20 18:00 574一、final 1.final变量: 当 ... -
oracle中update...select
2012-06-10 20:37 3613比如有两张表 USER_CH ... -
我对eclipse里设置编码格式的理解
2012-05-13 19:47 1302eclipse里设置编码格式的方式很多,用户很容易产生混乱,下 ... -
[转]JDK与JRE的区别
2012-03-22 00:22 576很多程序员已经干了一 ... -
[转]区分Eclipse中的两种JRE
2012-03-22 00:03 1012Eclipse用到两种JRE,一是 ... -
code
2011-12-29 13:37 8941.在D盘根目录下建立文件夹叫code。 2.把jd ... -
XFire使用Ant脚本生成服务端和客户端
2011-12-29 13:37 1046以前成功过,结果没 ... -
游标模板
2011-12-29 13:36 676郭哥给我的模板,留着以后用。 declare i nu ... -
JS:完全监视输入框
2011-12-28 10:04 1138有时候我们在输入框中输入文字,页面上实时显示着输入 ... -
关于“计算短信要拆分的条数”
2011-12-28 10:04 2127今天要实现一个功能,就是要在HTML页面上用JS根据短信的 ...
相关推荐
用于入门学习axis2,部署好即可用! //初始化文件 AxisProjectStub stub = new AxisProjectStub(); AxisProjectStub.Showname request = new AxisProjectStub.Showname(); request.setName("张三"); String name =...
Axis2 入门及简单例子 Axis2 是一个基于 Java 的 Web 服务框架,它提供了一个灵活、可扩展、可靠的方式来创建、部署和管理 Web 服务。Axis2 是 Apache 软件基金会的一个开源项目,是基于 SOAP 和 WSDL 的 Web 服务...
axis2教程 axis2入门 带你进入axis2的大门
Axis2 入门 简明教程
axis2学习资料
Axis2版本学习笔记Axis2版本学习笔记Axis2版本学习笔记Axis2版本学习笔记Axis2版本学习笔记Axis2版本学习笔记
AXIS2 入门文档
Axis2学习文档
axisAxis2学习教程-全面学习AXISAxis2学习教程-全面学习AXIS
SOAP与AXIS2入门教程附带实例,通过实例带您入门
webservice的Axis2入门教程java版
此教程是想学习axis2的一个很好的入门级的教程,如果想要实际运用到项目中,请选择其他高级的教程
Axis2创建web service快速入门
Axis2是下一代 Apache Axis。Axis2 虽然由 Axis 1.x 处理程序模型提供支持,但它具有更强的灵活性并可扩展到新的体系结构。Axis2 基于新的体系结构进行了全新编写,而且没有采用 Axis 1.x 的常用代码。支持开发 Axis...
AXIS2入门+进阶+webservice实例。共3个文档。
axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例
axis2学习,自己整理的axis2学习,自己整理的axis2学习,自己整理的
axis2-adb-1.5.4.jar axis2-adb-codegen-1.5.4.jar axis2-codegen-1.5.4.jar axis2-corba-1.5.4.jar axis2-fastinfoset-1.5.4.jar axis2-java2wsdl-1.5.4.jar axis2-jaxbri-1.5.4.jar axis2-jaxws-1.5.4.jar axis2-...
axis2-1.6.2.zip, windows axis2工具,根据 WSDL生成java文件。 1、axis2客户端下载地址:http://mirror.esocc.com/apache//axis/axis2/java/core/1.6.2/axis2-1.6.2-bin.zip; 2、下载解压在D:\Work_Program_...
axis2 webservice 服务端jar包: -->axis2-kernel-1.6.1.jar -->axis2-spring-1.6.1.jar -->axis2-transport-http-1.6.1.jar -->XmlSchema-1.4.7.jar -->wsdl4j-1.6.2.jar -->axiom-api-1.2.12.jar -->axiom...