如何在工程中使用axis2部署axis2实现webservicee

博客分类:
我在这里提供两种用AXIS2发布WebService的方法。
一种是打aar包放在指定位置(不方便调试),一种是不打aar包(方便调试),着重介绍后者。
说明:Eclipse版本3.4.2、tomcat版本5.5.12、AXIS2版本1.5.1、EclipseTomcatPlugin3.2.1
准备工作:
下载WAR (Web Archive) Distribution
“This will be the web application of Axis2 which can be deployed in most of the servlet containers.”
下载完后解压至tomcat安装目录下的webapps文件夹下,启动tomcat后,在webapps目录下会生成axis2文件夹。
访问能看到以下页面表示axis2运行成功。
点击Service会进入Service列表页面,当前只有一个Version服务。
打包发布:
在Eclipse下建立Java Project,工程名HelloFriend。
建包com.dm.service,包下建类HelloFriend。代码如下:
package com.dm.
public class HelloFriend {
private String friendName = "wangwei";
public String sayHello(String name) {return "Hello, " + name + "."; }
public String saySorry(String name) {return "Sorry, " + name + "."; }
public String getName() {return friendN }
在工程下新文件夹services/HelloFriend,HelloFriend下按类HelloFriend.java包路径建文件路径com/dm/service最后将编译后的HelloFriend.class我呢间拷入com/dm/service下。HelloFriend文件夹下在新建文件夹META-INF,META-INF下新建services.xml。最后在Windows命令行下进到services/HelloWord目录下运行:jar cvf HelloFriend.aar . (最后有个点号)会在HelloFriend目录下生成HelloFriend.aar包。
services.xml内容如下:
&service name="HelloFriend"&
&description&Hello Friend Example&/description&
&parameter name="ServiceClass"&com.dm.service.HelloFriend&/parameter&
&operation name="sayHello"&
&messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /&
&/operation&
&operation name="saySorry"&
&messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /&
&/operation&
&operation name="getName"&
&messageReceiver
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /&
&/operation&
&/service&
最后的工程目录如下:
把HelloFriend.aar拷入tomcat安装目录下的webapps/axis2/WEB-INF/services下,再进入进入Services就会看到HelloFriend了。
打aar包发布的方式不便于调试,下面介绍不打包发布的方式。
不打包发布:
在Eclipse下新建Tomcat Project,工程名:HelloWorld。新建包com.cm.service,新建类HelloWorld,代码如下:
package com.dm.
public class HelloWorld {
public String sayHello(String name) {return "Hello, " + name + "."; }
public String saySorry(String name) {return "Hello, " + name + "."; }
public String getWorld() {return "Hello, world!";}
在WEB-INF目录下新建web.xml文件,内容如下:
&?xml version="1.0" encoding="UTF-8"?&
&web-app id="wmf" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&
&servlet-name&AxisServlet&/servlet-name&
&servlet-class&org.apache.axis2.transport.http.AxisServlet&/servlet-class&
&load-on-startup&1&/load-on-startup&
&/servlet&
&servlet-mapping&
&servlet-name&AxisServlet&/servlet-name&
&url-pattern&/services/*&/url-pattern&
&/servlet-mapping&
&/web-app&
把tomcat安装目录下的webapps/axis2/WEB-INF下的modules、service和conf文件件拷至HelloWorld下的WEB-INF目录下。把lib下的如下jar包夜拷过去,以下jar包已经是最精简的了。
然后再services下新建HelloWorld/META-INF路径,META-INF下新建services.xml,内容如下:
&service name="HelloWorld"&
&description&
HelloWorld Service Example
&/description&
&parameter name="ServiceClass"&
com.dm.service.HelloWorld
&/parameter&
&operation name="sayHello"&
&messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /&
&/operation&
&operation name="saySorry"&
&messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /&
&/operation&
&operation name="getWorld"&
&messageReceiver class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /&
&/operation&
&/service&
启动tomcat后访问能看到服务信息了。
以上两种方法还是很相似的。
1. 第一种方法不用打aar包,把整个文件夹拷过去也是可以的。
2. 第二种方式只是相当于是在AXIS2工程上再开发。(得引入AXIS2的包,web.xml里要加AxisServlet)。同样需要services.xml。
3. 此文只是告诉大家怎么把AXIS2加到已有工程里来,至于servicex.xml格式怎么样,这里没有分析。
浏览 12124
浏览: 31856 次
来自: 武汉
楼主,我感谢你八辈祖宗,我代表八辈祖宗感谢你!
非常感谢楼主的这篇文章,对我帮助很大
好文章,多谢楼主分享~ 受益良多
写的很好~~
非常不错,感谢您的知识分享,但是想问一个问题,是不是开发阶段适 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'博客分类:
利用工具生成aar文件
下面是一个超简单的service,看不懂的同学请举手
package com.demo.service.
import com.demo.service.UserS
public class UserServiceImpl implements UserService {
public int Login(String username, String password) {
// TODO Auto-generated method stub
if (username.equals("a") && password.equals("a")) {
选择服务器端项目的classes目录
浏览: 395674 次
来自: 信阳
导出数据到excel文档中,可以使用pageoffice插件实 ...
key是需要向支付宝购买额度的
你好,你代码中提供的pid,key好像是无效的...
光有图没有解决方案......
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'&& 使用AXIS2和TOMCAT6.0学习写一个WEB SERVICE的项目工程,主要参考了博客:http://zhangjunhd.blog.51cto.com/90 然后自己做了一些补充。
1. 下载的路径已经有所变化
&& 在http://axis.apache.org/axis2/java/core/download.cgi#a1_5_3 里面选择版本然后下载Binary Distribution和WAR Distribution二个包
2. 对axis2-1.5.4-war.zip的解压
&& 解压以后得到了文件,我们只需要找到一个叫axis2.war的文件(它是和LICENSE.TXT什么的在一起),放在TOMCAT6.0\webapps下面,Tomcat会自动帮助你把包给解压了,然后启动TOMCAT就在http://localhost:8080/axis2/ 就可以看到效果
3. 目录的设置
&& 我是在我的项目(SearchWebService)里面的build里面建立了一个文件夹example然后再这个下面建立了META-INF和sample分别放services.xml和class文件 然后到example路径开始打包
4. 关于部署
&& 部署了HelloWorld.aar以后 然后写客户端检验代码,但是运行的时候会有2个错误报出
&& 一个是WORNING:log4j:WARN Please initialize the log4j system properly.
&& 解决的办法是在src下面新建一个log4j.properties文件 里面是一些关于logger的配置,自己网上可以GOOGLE下
&& 二是说http://localhost:8080/axis2/services/HelloWorld没有找到,我检查有人说是axis2不支持动态发布,然后把TOMCAT从新启动了一下,就看到了下面的效果
&& &hw:sayHelloResponse xmlns:hw="http://helloworld.com/"&ZJHelloWorld!&/hw:sayHelloResponse&
浏览: 289332 次
来自: 成都
Android自动化测试实战(Java篇+主流工具+框架+脚本 ...
上善若水_Happy 写道你好,想请教下icon的css是怎么 ...
你好,想请教下icon的css是怎么写的?
谢谢,这个文章解决了我的疑问
&bean id=&st ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'使用axis2发布webservice接口
1,准备工作:
首先我们要下载:axis2-1.4.1-war(发布webservice)
2.下载好了,把axis2-1.4.1-war目录下面的axis2.war发布到tomcat中。发布好,访问:https://localhost:8080/axis2/ 界面如下:
3.然后编写我们的java类,注意java类不要包,如下面:
4.然后把这个类的class文件拷贝D:\apache-tomcat-6.0.36\webapps\axis2\WEB-INF\pojo 如果WEB-INF这个目录下面没有pojo这个目录,那你得必须建立一个,因为在axis2的配置文件中配置的(文件路径是:conf/axis2.xml),具体详细看axis2.xml文件配置
5.拷贝后,启动你的tomcat,访问https://localhost:8080/axis2/services/listServices 看是否发布成功,成功界面如下面:
6.这样 你就可以访问这刚才创建方法了,
https://localhost:8080/axis2/services/TeseWebService/getUsername?name=link
7.这样你的webservie就已经发布好,接下来 我们就来调用发布的webservice,如图
8.代码如下:
package com.tl.
import org.apache.axis2.AxisF
import org.apache.axis2.rpc.client.RPCServiceC
import org.apache.axis2.addressing.EndpointR
import org.apache.axis2.client.O
import javax.xml.namespace.QN
public class RPCClient {
public static void main(String[] args) throws AxisFault {
// TODO Auto-generated method stub
// 使用RPC方式调用WebService
RPCServiceClient serviceClient =
serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
// 指定调用WebService的URL
EndpointReference er = new EndpointReference(&https://localhost:8080/axis2/services/TeseWebService&);
options.setTo(er);
} catch (AxisFault e) {
// TODO Auto-generated catch block
e.printStackTrace();
// 指定getGreeting方法的参数值
Object[] opAddArgs = new Object[]{&张三&};
//指定getGreeting方法返回值的数据类型的class对象
Class[] classs = new Class[]{String.class};
//指定要调用的getUsername方法及wsdl文件的命名空间,第一个参数表示WSDL文件的命名空间
QName qname = new QName(&https://ws.apache.org/axis2&,&getUsername&);
//调用getGreeting方法并输出该方法的返回值
//这里有三个参数的意思:1,是QName对象,表示要调用的方法名;2,webservice的参数值,参数类型是Object[];3,返回值class对象,参数类型是Class[],
System.out.println(serviceClient.invokeBlocking(qname, opAddArgs,classs)[0]);
9.通过访问https://localhost:8080/axis2/services/TeseWebService?wsdl 就可以看见 元素的targetNamespace属性值
10.执行main方法如下图:请问 axis2 中 怎么设置一个webservice 方法的访问用户名和密码?是POJO方式部署的 - ITeye问答
请问 axis2 中 怎么设置一个webservice 方法的访问用户名和密码?是POJO方式部署的。
不需要 数字签名 加密之类复杂的认证。
目前还没有答案
已解决问题
未解决问题

我要回帖

更多关于 axis2开发webservice 的文章

 

随机推荐