博学而笃志,好问而近思

【原创】关于Web Services技术中的Axis2的使用及Web服务的发布!

                    关于 Web Serviece 以及 Axis2 技术(修定1.2v)

   本人的公司在最近的一个金融项目上用到了AXIS2 1.0版,在Tomcat上部署AXIS2,用来发布Web Services
我下载了AXIS2 1.0 的 War发布包 成功的安装了AXIS2并且发布了一些Web Services。

我了解到现在很多同仁都曾经用过或将要用到AXIS2技术开发Web Services,为了给更多的想要了解AXIS2技术的人提供方便,鉴于个人的能力和知识有限,我制造此贴并热情的邀请使用过AXIS的
同仁们能来此发表你们的心得和看法。


以下是我发布一个简单的Web Services的过程跟大家分享:
一 .  从www.Apache.org下载Axis2的War发布包并解压缩到D:/Axis2。

二 .  将整个Axis2目录都复制到 D:\Tomcat 5.5\webapps 目录下。(我的Tomcat装在D盘D:\Tomcat 5.5目录下,以下目录问题我将不多解释,大家应该能看得明白)

三 .  在D:\Tomcat 5.5\conf\Catalina\localhost目录下创建配置文件axis2.xml, 文件内容如下:
<Context path="/axis2" reloadable="true" docBase="D:\Tomcat 5.5\webapps\Axis2\axis2-web" />

四 .  此时已经把Axis2安装到Tomcat上了,下面启动Tomcat在IE中输入
"http://localhost:8080/Axis2"来验证一下!(出来的画面有Axis标题)

五 .下面开使来发布一个简单的Web Services(关键是需要打包成.aar格式
      (1)创建Web服务的工作类MyService.java,如下:

public class MyService{
    public void ping(OMElement element){
     ......  //这是一个用来获取对方地址的Web服务方法
    }
    public OMElement echo(OMElement element){
     ......  //这是一个发送请求并返回结果的Web服务方法
    }
}
      (2)写配置文件services.xml
<service >
    <description>
        This is a sample Web Service with two operations, echo and ping.
    </description>
    <parameter name="ServiceClass" locked="false">AxisDemo.MyService</parameter>
    <operation name="echo">
        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
        <actionMapping>urn:echo</actionMapping>
    </operation>
     <operation name="ping">
        <messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
        <actionMapping>urn:ping</actionMapping>
    </operation>
</service>
      (3)做到这里就可以打包发布了,有人会问,把我这两个文件放到一个自己建的文件夹然后打包吗?我想那样做可能也可以,但是我推荐还是用这样一个包结构比较好(由于图示考到文本框中后显示空白我只好口头描述了):
          a.先在D:盘中建一个文件夹AxisDemo
          b.在AxisDemo下面建一个文件夹META-INF,并把MyService.java放在这里
          c.在META-INF下放配置文件services.xml

六 .  打包:
      1.在你的Windows开始菜单中点击"运行",输入 cmd  命令打开命令操作器,在命令操作器中输入 cd\ 命令退到C:>  (根目录),再输入 D: 转到D:> (我们的AxisDemo就在D:盘中,我们要将文件夹中的东东打包)
      2.然后输入打包命令:
jar  cvf  MyAxisDemo.aar  AxisDemo/.千万不要丢了最后那个点啊),此时你会发现D:盘下生成了一个MyAxisDemo.aar文件 (打包完成)

七 . 发布:
      (1)发布时我们打开IE输入 http://localhost:8080/axis2  然后点击 Administration 进入AXIS2管理界面,
输入用户名:Admin  密码:Axis2  登陆进去,再点击第一个 链接 Upload Service ,然后点浏览找到你想要发布的Web Service文件(即.aar文件),点Upload发布它!
 
       (2)重启你的Tomcat服务然后在IE中输入"http://localhost:8080/Axis2",点击那个Services链接吧,你就可以看到你刚发布的名为MyService的Web服务了!



                                                                                                                                                          ----冰川
                                                                                                                                                             2006/6/26

 

posted on 2006-06-26 17:52 冰川 阅读(11311) 评论(71)  编辑  收藏

评论

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-26 17:59 冰川

我真心的希望有更多的朋友在这里得到收获!  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-26 22:57 lizongbo


axis2好像还不支持httpGet :(

  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-27 08:29 冰川

@lizongbo:
是吗,谢谢你的回贴。
  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-27 10:44 shrimp

可是点击MyService看不到WSDL文件的形式啊?
还有,它的异步传输模式是怎么实现的,客户端是监听吗  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-27 12:32 冰川

@shrimp:
1.我的可以看到WSDL文件啊,你那里报了什么错吗?
2.异步传输模式我还没用到,下次去看看
3.客户端应该是监听的  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-27 16:04 冰川

@shrimp:
关于AXIS2中客户端API同步/异步问题
同步/异步(或阻塞/非阻塞)行为是基于在web service请求的线程,同步服务将会阻塞,等待相关消息到达。另一方面,异步请求仅仅返回,等待相关消息被后台另一个不同线程执行。
同步请求很简单:请求在相关消息到达前等待,并且可以像本地过程调用一样被编码。但是异步消息的相互关系就比较复杂,客户端必须处理这种复杂性。尽管如此,通过一些额外工作来处理这种复杂情况仍是必要的。

应答式消息可以表现为以下四种方式:

1.双向In-Out 同步
2.双向In-Out 异步
3.单向In-Out 同步
4.单向In-Out 异步

下面的代码实例说明这些案例怎样被Axis2寻址,注意客户端API的四种属性怎样被使用。

1.In-Out同步,HTTP作为双向传输方式

OMElement payload = .... Call call = new Call();call.setTo( new EndpointReference(AddressingConstants.WSA_TO, "HTTP://...));call.setTransportInfo(Constants.TRANSPORT_HTTP, Constants.TRANSPORT_HTTP, false);OMElement result = (OMElement) call.invokeBlocking( operationName.getLocalPart(), payload);

这里,SOAP消息经由同一个HTTP连接传播,地址属性没有指定,所以它们在服务器方缺省为匿名,客户端API将被锁定直到回复消息到达。

2.In-Out异步,HTTP使用HTTP作为双向传送

//this is the payload goes on the body of SOAP message OMElement payload = .... Call call = new Call();call.setTo( new EndpointReference(AddressingConstants.WSA_TO, "HTTP://...));call.setTransportInfo(Constants.TRANSPORT_HTTP, Constants.TRANSPORT_HTTP, false);Callback callback = new Callback() { public void onComplete(AsyncResult result) { //what user can do to result } public void reportError(Exception e) { //on error }};call.invokeNonBlocking(operationName.getLocalPart(), payload, callback);

和前面相同,SOAP消息经由同一个HTTP连接传输并且不需要寻址,一旦回复消息到达客户端API不会阻塞并且回调将被执行。

3.In-Out, 异步HTTP 作为单向传输

OMElement payload = .... Call call = new Call();call.setTo( new EndpointReference(AddressingConstants.WSA_TO, "HTTP://...));call.setTransportInfo(Constants.TRANSPORT_HTTP, Constants.TRANSPORT_HTTP, true);Callback callback = new Callback() { public void onComplete(AsyncResult result) { .... } public void reportError(Exception e) { ... }};call.engageModule(new Qname("addressing"));call.invokeNonBlocking(operationName.getLocalPart(), method, callback);

在这个案例中,SOAP消息通过两个HTTP连接传输,寻址是强制的,ReplyTo标题出现指示服务器端经由单独的通道发送回应。客户端没有阻塞,当回应消息到达时,唤起回调。

4.In-Out, 同步 HTTP 作为单向传送

OMElement payload = .... Call call = new Call();call.setTo(new EndpointReference(AddressingConstants.WSA_TO, "HTTP://...));call.setTransportInfo(Constants.TRANSPORT_HTTP, Constants.TRANSPORT_HTTP, true);OMElement result = (OMElement) call.invokeBlocking( operationName.getLocalPart(), payload);

在这种场合下使用"In-Out,异步HTTP作为单向传送"类型,在结果到达第二种连接时唤起阻塞,执行并返回结果。

总结

总而言之,web wervice消息行为建立在三种因素上:消息交互模式,客户端同步异步模式和传送行为。Asis2建立核心在不一定要任何MEP类型,不过为MEPs的广泛支持:单向和应答提供了客户端API支持,这篇文章解释Axis2消息支持概念和客户端API的使用。

  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-27 16:10 冰川

以上回复中的代码由于复制过来后忘了排版,造成了阅读不方便,我很抱歉。
请大家把代码自行复制,然后排一下版再看吧  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-27 16:22 冰川

大家也可以像我那样以回贴的形式,发表自己关于AXIS2的使用心得或经验以供其他人共享!

我想让急需了解AXIS2技术的人能够在一个地方得到尽可能多的有关AXIS2的知识和代码实例,这样可以节约他们的时间,给他们带来便利。

希望用过AXIS2 和 对AXIS2有一定研究的同仁们多多来这里发表经典回贴 !

  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-27 17:08 shrimp

我试验的时候 ,看的是axis2里自带的userguide,客户端调用的代码感觉和你上面给的不一样,没有Call的实例创建,倒是有Options 。我用的是Axis2 的1.0版本 ,你用的是这个版本吗?  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-27 17:10 shrimp

文档中描述在客户端API可以支持WSDL1.1和WSDL2.0,可是在某些地方看到的说目前没有WSDL2.0的reader,目前到底是一个什么阶段啊?  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-27 19:32 shrimp

@冰川
部署后,点击MyService,显示的信息如下,并没有wsdl文件的形式,而它的版本version服务倒可以显示wsdl.

<error>
<description>Unable to generate WSDL for this service</description>
<reason>Either user has not dropped the wsdl into META-INF or operations use message receivers other than RPC.</reason>
</error> 回复
  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-28 09:06 冰川

@shrimp:

1. 我用的是AXIS2 1.0版
2. www.w3.org(万维网组织全球办事处)上有WSDL2.0的Reader具体网址:
http://www.w3.org/TR/wsdl20/
3. 你的错误信息说WSDL文件没有进入到META-INF文件夹,还说什么你用了其他的RPC接受信息,我也搞不懂,你试试用AXIS2另一种发布方法吧!
步骤如下:
(1)前面的操作一直到打包都按照首帖上面的做。
(2)发布时我们不把.aar文件考过去了,而是打开IE输入http://localhost:8080/axis2进入Axis2界面(Tomcat要开启),然后点击
Administration,输入用户名:Admin 密码:Axis2登陆进去,再点击第一个
链接Upload Service,然后点浏览找到你想要发布的Web Service文件(即.aar文件),点Upload发布它!
(3)在IE输入http://localhost:8080/axis2后点Service去确认一下吧
上帝会保佑你的,阿门~~~

  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-28 15:38 小青蛙

上面的方法也解决不了问题,这是AXIS V1的一个BUG去下一个Nightly Builds的版本可解决问题。

BTW第三步在TOMCAT5中是非必需的,可自动部署  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-28 17:00 冰川

@小青蛙:
楼主在这里谢谢你的支持!  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-28 19:34 shrimp

@冰川
@小青蛙
下载了nightlybuild的war文件,复制到webapps目录下,查看http://localhost:8080/axis2 时出现以下的错误提示,连service 列表都显示不了。
org.apache.jasper.JasperException
  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-28 19:37 shrimp

@冰川
客户端代码,我是在axis2-std-1.0-bin\samples\userguide\src\userguide\clients目录下的客户端调用的代码感觉和你上面给的不一样,没有Call的实例创建,倒是有Options,这个是不是0.95版本上的,它们的差别是什么?  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-29 11:22 冰川

@shrimp:

1。你就按我的首贴做就好了,我修改并测试过了的。
2。具体Call,和Options的意思和用法可以去查看你下载的发布包中的类说明文档,就在javadocs文件夹中。
3。下面是调用Web Service的客户端代码示例,大家有什么使用经验或者好的代码示例也可以写回帖共享啊!

用非阻塞、双向方式调用Web Service方法:"Echo" 的客户端程序
(本人以及Userguide都推荐使用,也是比较常用的客户端写法)
try{
OMElement payload = ClientUtil.getEchoOMElement();

Options options = new Options();
options.setTo(targetEPR); // 左边的参数:targetEPR == "http:/..."
options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
options.setUseSeparateListener(true);
options.setAction("urn:echo"); //这是我们在 service.xml 里的 Action 映射

//Callback to handle the response
Callback callback = new Callback(){
public void onComplete(AsyncResult result){
System.out.println(result.getResponseEnvelope());
}

public void onError(Exception e){
e.printStackTrace();
}
};

//非阻塞方式
sender = new ServiceClient();
sender.engageModule(new QName(Constants.MODULE_ADDRESSING));
sender.setOptions(options);
sender.sendReceiveNonBlocking(payload,callback);

//等待,直到接受到响应消息
while(!callback.isComplete()){
Thread.sleep(1000);
}

//在这里需要关闭客户端

}catch(AxisFault axisFault){
axisFault.printStackTrace();
}catch(Exception ex){
ex.printStackTrace();
}
finally{
try{
sender.finalizeInvoke();
}catch(AxisFault axisFault){
//此处代码省略
}
}

希望大家多多贡献关于Axis2的知识(:  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-30 13:55 shrimp

@冰川
仔细看了你上面的部署之前的操作,关于第5,第6 的说明感觉有些不对,文件的具体位置并没有说明白,明明是jar cfv MyService.aar ,怎么会生成AxisDemo.aar文件呢,example1 的目录是什么层次,不如说直接把axis2给的userguide下example1中的实例直接拷过去 ,我就是直接复制过去的。不知道会有什么差别?  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-30 16:47 冰川

@shrimp:
哈哈,是错了,谢谢提出来,我实现后语句有的不记得的只好考了userguide里的语句,结果出了这种BUG,哈哈哈
2.直接考过去也可以的,看你的Tomcat是什么版本,可以自动发布的就行,
我没修改前发布那段写的就是用考的后来改了,这次又要改咯!

  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-30 17:08 冰川

@shrimp:
你还可以看看你上楼的那篇回贴,是客户端调用Web Services的代码例子。
(即 2006-06-29 11:22 | 冰川 那篇帖子)

另外:大家还有更好的客户端调用Web Services代码例子也请贴到这边来啊!
  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-30 17:21 嘎崩豆

axis2的1.0版本自己部署的服务不能生成wsdl文件,而version倒是可以生成wsdl文件,后来将部署服务的wsdl文件复制到META-INF目录下就可以了,因为是使用已有的例子,但不知道axis2下的Java2WSDL工具如何使用,还是没有此工具?  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-06-30 17:51 冰川

@嘎崩豆:
这个...Java2WSDL工具有是有,不过一般不直接用,而是在Eclipse中可以用到这个功能,我没具体用过,希望遇到高人给你解答

你先下个文档看看吧:
http://ws.apache.org/axis2/download/1_0/download.cgi

下到本地接压缩后再打开这个本地路径看看(下面是目录结构)
xdocs\tools\1_0\CodegenToolReference.html
  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-07-04 11:20 嘎崩豆

axis1.x 版本下是否支持异步传输模式,别人说在1.x下是有的。
或许自己编程在客户端调用来实现
?  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-07-04 15:16 happy

报错如下:(
Invalid service MyService.aar due to services.xml not found for service   回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-07-12 18:46 冰川

@happy:
我这段时间在忙项目开发,没有时间来回答你们的问题
抱歉!这个错误是MyService.aar里的配置文件写错了,请检查!
你再按我首贴的步骤试试,我测试过整个过程的,最后生成MyAxisDemo.arr
文件再发布。

再次希望,有高人路过时帮我解决一下大家的问题,不然我写这篇讨论贴
就变成我唱独角戏了,此贴也就失去了意义
再次诚心邀请有使用过AXIS2的同仁一起来参加我们的讨论!
  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-07-12 18:50 冰川

难道是这里缺乏高手吗?
我想不会的,这里可是blogjava-专注于java技术的社区啊!  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-07-18 21:03 Shooper.Java

你上面第三步不对

三 . 在D:\Tomcat 5.5\conf\Catalina\localhost目录下创建配置文件axis2.xml, 文件内容如下:
<Context path="/axis2" reloadable="true" docBase="D:\Tomcat 5.5\webapps\Axis2\axis2-web" />

应该是

<Context path="/axis2" reloadable="true" docBase="D:\Tomcat 5.5\webapps\Axis2" />  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-07-18 21:06 Shooper.Java

你跑起来是因为你把应用拷到了Tomcat 5.5\webapps 下,这个目录下,tomcat启动时会自动发布应用  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-07-19 12:50 冰川

@Shooper.Java:
谢谢,我想是这样的,不过如果不在Axis2下发布就不需要拷到Webapps下了。  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-07-24 10:07 Owen.ou

部署后,点击MyService,显示的信息如下,并没有wsdl文件的形式,而它的版本version服务倒可以显示wsdl.
<error>
<description>Unable to generate WSDL for this service</description>
<reason>Either user has not dropped the wsdl into META-INF or operations use message receivers other than RPC.</reason>
</error>

之前看到过一篇文章,作者介绍说遇到这种情况没什么关系,部署后的Web Service可以正常被调用,我做过试验,确实可以。

本人最近也在学习Axis2和SOAP,欢迎各位朋友交流经验!
我的MSN:ouxingning@hotmail.com


  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-07-27 18:14 冰川

@Owen.ou
是吗?我没有试过,这样也可以啊。
  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-07-28 17:31 seanzhuxukai

不用显示WSDL是可以的

请问用.net能调用AXIS2写的WebServices吗?  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-07-31 08:33 冰川

@seanzhuxukai
我不会.NET的,不好意思  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-07-31 10:27 XFly

@嘎崩豆
eclipse中生成wsdl很容易的,通过axis2的插件很方便就可以做到,只是我用的时候好像有个bug,就是如果生成包含自定义类型的wsdl不是正确的,其中包括重复的service标签,这个删掉就行了.  回复  更多评论   

# re: 关于Web Services技术中的Axis2的使用及Web服务的发布!(此为讨论贴,请高人加入讨论) 2006-08-03 09:15 冰川

@XFly
谢谢你的支持
  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布(此为讨论贴,请高人加入讨论) 2006-08-26 09:55 binbin

@嘎崩豆
部署服务的wsdl文件 在什么地方?  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布(此为讨论贴,请高人加入讨论) 2006-08-26 10:40 binbin

想和大家交个朋友,我的qq:232203251
先跟大家学习axis2。  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布(此为讨论贴,请高人加入讨论) 2006-08-27 09:53 彬彬

@冰川
我觉得这个文章没什么用,全是最基本的东西。对与开发webservice起不到什么作用。
你怎么不写个,axis2怎么传递对象,怎么传递list set之类的对象。
写个怎么简单的文章没有什么实质的作用。。  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布(此为讨论贴,请高人加入讨论) 2006-08-27 10:50 冰川

@彬彬:
谢谢你的建议,最近一直在赶项目
时间比较紧张,所以才只写了最基本的发布
等以后有时间了我在写一些深一点的内容
很抱歉。
  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布(此为讨论贴,请高人加入讨论) 2006-08-27 15:02 彬彬

@冰川
上面有我的qq号码,你加我吧,我请教几个问题。
我的qq:232203251  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布(此为讨论贴,请高人加入讨论) 2006-09-01 10:31 冰川

@彬彬:
我很少上QQ的,另外我刚刚写了一篇关于Axis2的客户端和服务器端具体实现的帖子,你有时间的话可以看看,好长的,呵呵。

  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2007-03-13 14:29 啊啊

三 . 在D:\Tomcat 5.5\conf\Catalina\localhost目录下创建配置文件axis2.xml, 文件内容如下:
<Context path="/axis2" reloadable="true" docBase="D:\Tomcat 5.5\webapps\Axis2\axis2-web" />
这个东西根本不用加.  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2007-03-16 12:46 zhms999

按照的你方法,是无法看见wsdl文件的,
http://localhost:8080/axis2/services/MyService?wsdl

会提示如下信息
- <error>
<description>Unable to generate WSDL for this service</description>
<reason>If you wish Axis2 to automatically generate the WSDL, then please use one of the RPC message receivers for the service(s)/operation(s) in services.xml. If you have added a custom WSDL in the META-INF directory, then please make sure that the name of the service in services.xml (/serviceGroup/service/@name) is the same as in the custom wsdl's service name (/wsdl:definitions/wsdl:service/@name).</reason>
</error>  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2007-03-19 20:37 冰川

@啊啊
谢谢你的意见,如果你是用的eclipse自动配置的项目就可以不用这句的.
@zhms999
你是否启动了远程方法调用(RPC)服务啊?  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2007-03-21 22:43 zhms999

肯定启动了的啊,难道你的可以吗?  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2007-03-22 13:39 冰川

@zhms999
哦,你的.wsdl文件是怎么写的?你把这个文件放在哪个目录下的?  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布![未登录] 2007-03-22 16:51 soa

我按照你的service.xml配置我的服务,老是配置不成功,这是怎么回事,都是报错,郁闷惨了  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布![未登录] 2007-03-22 16:55 soa

org.apache.axis2.deployment.DeploymentException: services.xml not found for service 'C:\Tomcat 5.5\webapps\axis2\WEB-INF\services\Hello.jar'; nested exception is: org.apache.axis2.deployment.DeploymentException: services.xml not found for service 'C:\Tomcat 5.5\webapps\axis2\WEB-INF\services\Hello.jar' at org.apache.axis2.deployment.repository.util.ArchiveReader.processServiceGroup(ArchiveReader.java:124) at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:620) at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:195) at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:207) at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:155) at org.apache.axis2.deployment.DeploymentEngine.loadServices(DeploymentEngine.java:91) at org.apache.axis2.deployment.WarBasedAxisConfigurator.loadServices(WarBasedAxisConfigurator.java:142) at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:42) at org.apache.axis2.transport.http.AxisServlet.initConfigContext(AxisServlet.java:213) at org.apache.axis2.transport.http.AxisServlet.init(AxisServlet.java:182) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1105) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:932) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3917) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4201) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524) at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:904) at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:867) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1122) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021) at org.apache.catalina.core.StandardHost.start(StandardHost.java:718) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442) at org.apache.catalina.core.StandardService.start(StandardService.java:450) at org.apache.catalina.core.StandardServer.start(StandardServer.java:709) at org.apache.catalina.startup.Catalina.start(Catalina.java:551) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432) Caused by: org.apache.axis2.deployment.DeploymentException: services.xml not found for service 'C:\Tomcat 5.5\webapps\axis2\WEB-INF\services\Hello.jar' at org.apache.axis2.deployment.repository.util.ArchiveReader.processServiceGroup(ArchiveReader.java:121) ... 35 more   回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布![未登录] 2007-03-22 16:57 soa

我就是简单的一个hello程序,返回问候语。
配置文件为:
<service name="Hello">
<parameter name="ServiceClass" locked="xsd:false">
com.test.hello.Hello
</parameter>
<operation name="SayHello">
<messageReceiver
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</operation>
</service>

我快要疯掉了:(((((  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2007-03-22 17:06 zhms999

wsdl?
org.apache.axis2.rpc.receivers.RPCMessageReceiver

用了这个axis2服务器是可以自己生成的wsdl的啊.
为什么这个例子不能自己生成wsdl呢??

我是初学者,想知道你例子中哪儿介绍了生成wsdl呢?
我在axis2网站上看了,和你的一样.是否需要另外生成?
为什么org.apache.axis2.rpc.receivers.RPCMessageReceiver这种方式axis2就可以自己生成wsdl  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2007-03-22 17:09 zhms999

(3)做到这里就可以打包发布了,有人会问,把我这两个文件放到一个自己建的文件夹然后打包吗?我想那样做可能也可以,但是我推荐还是用这样一个包结构比较好(由于图示考到文本框中后显示空白我只好口头描述了):
a.先在D:盘中建一个文件夹AxisDemo
b.在AxisDemo下面建一个文件夹META-INF,并把MyService.java放在这里
c.在META-INF下放配置文件services.xml

请问b项里面应该放MyService.java文件,还是放MyService.class文件.
????????????????
有没有你的demo提供下载,  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布![未登录] 2007-03-22 22:27 soa

我现在只要是打包发布就要抛异常。。。

我把网上说的配置文件全部都试过了,都不行!!!!

不知道谁能指点一下  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布![未登录] 2007-03-23 09:32 soa

搞定了 呵呵  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2007-03-23 11:11 冰川

@zhms999
.wsdl文件可以由axis里面的org.apache.axis.wsdl.Java2WSDL这个类来生成,Java2WSDL这个命令根据已有的Java类文件生成WSDL文件。
理论上是放MyService.class文件,但实际应用时放MyService.java文件也行。
@soa
呵呵,搞定了?问题是自己搞定的一定很有成就感吧,哈哈。。。
  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布![未登录] 2007-03-25 17:13 soa

我想问问:
冰川,使用过soap来调用web service吗?

我写好代码了,但是就抛异常
Exception in thread "main" [SOAPException: faultCode=SOAP-ENV:Protocol; msg=Unsupported response content type &quot;text/html; charset=utf-8&quot;, must be: &quot;text/xml&quot;. Response was:
&lt;html&gt;&lt;head&gt;&lt;title&gt;Apache Tomcat/5.5.17 - Error report&lt;/title&gt;&lt;style&gt;&lt;!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--&gt;&lt;/style&gt; &lt;/head&gt;&lt;body&gt;&lt;h1&gt;HTTP Status 500 - &lt;/h1&gt;&lt;HR size=&quot;1&quot; noshade=&quot;noshade&quot;&gt;&lt;p&gt;&lt;b&gt;type&lt;/b&gt; Exception report&lt;/p&gt;&lt;p&gt;&lt;b&gt;message&lt;/b&gt; &lt;u&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;description&lt;/b&gt; &lt;u&gt;The server encountered an internal error () that prevented it from fulfilling this request.&lt;/u&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;exception&lt;/b&gt; &lt;pre&gt;org.apache.axiom.om.OMException: SOAPEnvelope must contain a body element which is either first or second child element of the SOAPEnvelope.
org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.getBody(SOAPEnvelopeImpl.java:142)
org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.addChild(SOAPEnvelopeImpl.java:103)
org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.getHeader(SOAPEnvelopeImpl.java:82)
org.apache.axis2.engine.AxisEngine.createFaultMessageContext(AxisEngine.java:183)
org.apache.axis2.transport.http.AxisServlet.handleFault(AxisServlet.java:168)
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:153)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;note&lt;/b&gt; &lt;u&gt;The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.&lt;/u&gt;&lt;/p&gt;&lt;HR size=&quot;1&quot; noshade=&quot;noshade&quot;&gt;&lt;h3&gt;Apache Tomcat/5.5.17&lt;/h3&gt;&lt;/body&gt;&lt;/html&gt;
]
at org.apache.soap.rpc.Call.getEnvelopeString(Unknown Source)
at org.apache.soap.rpc.Call.invoke(Unknown Source)
at com.test.TClient3.main(TClient3.java:29)   回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布![未登录] 2007-04-02 19:23 herry

问一下楼主:
如果每个方法都这样去写service.xml,以及每个方法都要写,那岂不是很费劲.有没有自动生成的工具?
以前用axis1.x部署服务的时候,只要构建一个server-config.wsdd部署文件,里面只需要写类型映射的javabeans,然后axis就可以根据这个wsdd文件生成wsdl文件,里面就包含所有发布的服务接口. axis2中有类似的发布方式吗?  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2007-04-02 22:02 冰川

@soa:
错误是说你的服务响应文件的类型是text/html的而不是SOAP所要求的text/xml类型.
@herry:
wsdl文件可以用命令来生成,如:
java2wsdl –cp . -cn [package].StockQuoteService –of ..\wsdl\StockQuoteService.wsdl

另外,最近很忙,没有太多时间来照看BLOG,仅提供两个关于AXIS2的学习连接:
英文的:http://ws.apache.org/axis2/
中文的:http://www.ibm.com/developerworks/cn/webservices/
  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2007-04-27 04:07 maser

我觉的比较别扭,还必须使用工具生成arr文件,而且还必须手动放到WEB-INF\services目录,难道就不可以,不用打arr包吗,这点我不是很理解,请兄弟们指正,反正jdk新版本里对WebService支持就简单多了,用注释语句就可以啦。
问题1,在eclipse中,我们难道没次打包都要自己去拽class和service.xml到
.arr包中吗,或者在里面加ant build.xml来代替手工?
问题2,我们在WEB-INFO/classes目录下服务文件XXXXservice.class,除了打包到.arr里,放到工程中是不是有浪费空间的嫌疑

xfire就不这样,只需配置将服务services.xml放到src\META-INF\xfire\下,同时web.xml就配置一下servlet,就可以啦,不需要打打.arr包,我觉的打.arr包简直就是多此一举,最初是怎么设计的?是不是还有什么非常有利的地方?
当然xfire问题一大堆,建议大家不要用,最严重的是目前它仅仅支持到spring1.2.6,如果你的项目中使用了spring2.0以上的版本,那么你几乎没法用xfire,除此之外,还有好几个jar包冲突,我就是没办法才来用axis2.0的
  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布![未登录] 2007-05-26 22:38 kitty

各位,有谁知道如何该Axis2 console用户名和密码, lz给的Admin,Axis 2无法登陆  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2007-07-20 14:45 emike

应该是admin/axis2  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2007-08-07 15:40 忠岩

QQ 475903393
各位,问个问题,我将冰心的程序发布到外网后,会出现以下错误
the host did not accept the connection with timeout 60000 ms
不知道怎么解决,还请指点,

再有,axis2工程发布后,点击服务名称也会出现
<error>
<description>Unable to generate WSDL for this service</description>
<reason>If you wish Axis2 to automatically generate the WSDL, then please use one of the RPC message receivers for the service(s)/operation(s) in services.xml. If you have added a custom WSDL in the META-INF directory, then please make sure that the name of the service in services.xml (/serviceGroup/service/@name) is the same as in the custom wsdl's service name (/wsdl:definitions/wsdl:service/@name).</reason>
</error>
我用java2wsdl 处理后wsdl已放入到META-INF 为什么还会有此问题呢.

请各位指点指点,谢谢
  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布![未登录] 2007-11-12 09:26 andrew

我有问题,axis2到底支持spring2.0吗?为什么会接续不了spring的配置文件??  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2007-11-26 11:06 林行天下

为什么我在.services.xml里面1.org.apache.axis2.rpc.receivers.RPCMessageReceiver:打包发布成功
2.org.apache.axis2.receivers.RawXMLINOutMessageReceiver:打包发布失败
  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2007-12-13 09:52 milo

jar cvf MyAxisDemo.aar AxisDemo/.
这样的打包命令在我的电脑里面打完的包是错误的
在我的电脑里面是这样的
首先进入D:AxisDemo目录
然后
jar cvf MyService.aar .
后面有一个点  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2008-03-13 09:44 Axis2 初学者

你的命令应该是
>[%java_home%]\bin\jar.exe cvf MyService.aar .(必须要点)
不然提示说找不到jar命令  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2008-03-13 09:50 Axis2 初学者

@忠岩
我的做法是把生成的XX.aar文件拷贝至Asix2\WEB-INF\services中,在容器启动之后,可以动态载入。
个人感觉wsdl主要是为了生成客户端存在的,是作为服务器代码和客户端代码的关联,不知道这样理解对不对啊。
java2wsdl 服务端生成wsdl文件
wsdl2java 由wsdl文件生成客户端文件  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2008-03-13 09:57 Axis2 初学者

@冰川
web services是可以客户端监听的吗?
个人感觉不是,soap协议是无状态的协议,相当于http,不能理解为什么客户端能监听?
我的理解是客户端发送请求给服务器端,服务器可以同步或异步响应,客户端在接到响应后,可以同步或异步处理!
请教!  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布![未登录] 2008-03-24 20:43 chen

nested exception is: org.apache.axis2.deployment.DeploymentException: services.xml not found for service


我也碰到了打包成aar文件之后,部署时出现问题,是不是因为没有打包成功啊?  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2008-03-27 22:02 juanjuan

打包成功,发布出现This Web axisService has deployment faults 哪里错了啊  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2008-04-16 15:43 somber

@soa
请问你怎么搞定的?我发布的服务遇到了和一样的抛出异常
请指教!!
  回复  更多评论   

# re: 【原创】关于Web Services技术中的Axis2的使用及Web服务的发布! 2011-05-05 17:19 11

有一个webservice类,这个类调用了其他类,我想用services.xml发布这个webservice类,它引用的其他类放在哪里?  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2006年6月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

导航

统计

常用链接

留言簿(14)

随笔档案

BlogJava的帮助

朋友的博客

搜索

最新评论

阅读排行榜

评论排行榜

快乐工作—享受生活