运用Axis2快速开发web服务
使用Axis2快速开发web服务
使用Axis2开发web服务一般有以下三种形式:
1.pojo模式,此方法最为简便,但是也有很多的局限性,最为明显的就是不能有package
step1:编写pojo对象
public class HelloWorld{
public String sayHello(String name){
return "Hello,"+name;
}
}
编译成class文件。
step2:在Tomcat目录/webapps/axis2/WEB-INF/下新建pojo文件夹。
step3:将class文件拷贝到pojo文件夹中。
setp4:启动tomcat,在浏览器中输入:
http://localhost:8080/axis2/services/HelloWorld/sayHello?
param0="ningkun"将会看到,"Hello,ningkun"的消息。
2.如果我们想以pojo的形式发布web服务,并且与package的话,可以使用jar包的形式发
布web服务。
step1:编写java类
AddressService类
package sample;
import javax.jws.WebService;
@WebService
public class AddressService {
public Address getAddress(){
Address address = new Address();
address.setStreet("Street");
address.setNumber("Number 15");
return address;
}
}
Address类
package sample;
public class Address {
private String street;
private String number;
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
}
step2:修改axis2/WEB-INF/conf/axis2.xml
添加
<deployer extension=".jar" derectory="pojo" class="org.apache
.axis2.deployment.POJODeployer"/>
step3:将pojo类打包后放到pojo文件夹下。
3.用Serice文件发布web服务。
step1:编写java类,此处我们使用1中的HelloWorld类
step2:编写services.xml
<service name="HelloService">
<description>
This is a sample Web Service.
</description>
<parameter name="ServiceClass" locked="false">
HelloWorld
</parameter>
<operation name="sayHello">
<messageReceiver
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</operation>
</service>
注:messageReceiver中的class属性有多种选择,
RawXMLINOutMessageReceiver 接受参数,并有返回值
RawXMLINOnlyMessageReceiver 无返回值
4.打包aar文件
项目目录如下
HelloWorld.class
META-INF
services.xml
jar cvf HelloService.aar .
step3:
经我研究axis2的pojo这种方式有问题,在生成的soap消息内,会加上一个特殊属性type="类名" 但是在wsdl定义中是找不到这个属性定义的,有的soap解析会出问题的,这不是标准通用的方式
目前尚未发现,有待进一步研究。
setp4:启动tomcat,在浏览器中输入: http://localhost:8080/axis2/services/HelloWorld/sayHello? param0="ningkun"将会看到,"Hello,ningkun"的消息。 ===================================================== 請問 一下, webservice可以從以上介上的方法來進行調用嗎? 我試了Axis2 內建的getVersion怎麼都調不出來呢? 在ie輸入: http://localhost:8080/axis2/services/Version?param0="hi" 回應的是HTTP500 內部伺服錯誤
不是吧,正常情况下是可以得到回应的啊。
经我研究axis2的pojo这种方式有问题,在生成的soap消息内,会加上一个特殊属性type="类名" 但是在wsdl定义中是找不到这个属性定义的,有的soap解析会出问题的,这不是标准通用的方式
目前尚未发现,有待进一步研究。
axis2有一个SOAPMonitor,你可以配置好用它查看发送的soap消息
本来我也没注意到这个问题,我是在使用tuscany做客户端调用axis2的pojo服务端的时候,出问题了,死循环导致溢出,后来跟踪eclipse的sdo实现发现到这个问题的,因为这个type属性在wsdl和schema中未定义,所以导致循环解析出错
setp4:启动tomcat,在浏览器中输入: http://localhost:8080/axis2/services/HelloWorld/sayHello? param0="ningkun"将会看到,"Hello,ningkun"的消息。 ===================================================== 請問 一下, webservice可以從以上介上的方法來進行調用嗎? 我試了Axis2 內建的getVersion怎麼都調不出來呢? 在ie輸入: http://localhost:8080/axis2/services/Version?param0="hi" 回應的是HTTP500 內部伺服錯誤
不是吧,正常情况下是可以得到回应的啊。
我用 .Net WebServiceStudio 2.0 的工具來測試是正常,
但我比較好奇的是, 可以使用原作者 所提的方式,在IE的輸入網址來Resquest
,真的可以嗎??
使用Axis2开发web服务一般有以下三种形式:
1.pojo模式,此方法最为简便,但是也有很多的局限性,最为明显的就是不能有package
step1:编写pojo对象
public class HelloWorld{
public String sayHello(String name){
return "Hello,"+name;
}
}
编译成class文件。
step2:在Tomcat目录/webapps/axis2/WEB-INF/下新建pojo文件夹。
step3:将class文件拷贝到pojo文件夹中。
setp4:启动tomcat,在浏览器中输入:
http://localhost:8080/axis2/services/HelloWorld/sayHello?
param0="ningkun"将会看到,"Hello,ningkun"的消息。
2.如果我们想以pojo的形式发布web服务,并且与package的话,可以使用jar包的形式发
布web服务。
step1:编写java类
AddressService类
package sample;
import javax.jws.WebService;
@WebService
public class AddressService {
public Address getAddress(){
Address address = new Address();
address.setStreet("Street");
address.setNumber("Number 15");
return address;
}
}
Address类
package sample;
public class Address {
private String street;
private String number;
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
}
step2:修改axis2/WEB-INF/conf/axis2.xml
添加
<deployer extension=".jar" derectory="pojo" class="org.apache
.axis2.deployment.POJODeployer"/>
step3:将pojo类打包后放到pojo文件夹下。
3.用Serice文件发布web服务。
step1:编写java类,此处我们使用1中的HelloWorld类
step2:编写services.xml
<service name="HelloService">
<description>
This is a sample Web Service.
</description>
<parameter name="ServiceClass" locked="false">
HelloWorld
</parameter>
<operation name="sayHello">
<messageReceiver
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</operation>
</service>
注:messageReceiver中的class属性有多种选择,
RawXMLINOutMessageReceiver 接受参数,并有返回值
RawXMLINOnlyMessageReceiver 无返回值
4.打包aar文件
项目目录如下
HelloWorld.class
META-INF
services.xml
jar cvf HelloService.aar .
step3:
1 楼
liang1022
2008-10-15
setp4:启动tomcat,在浏览器中输入:
http://localhost:8080/axis2/services/HelloWorld/sayHello?
param0="ningkun"将会看到,"Hello,ningkun"的消息。
=====================================================
請問 一下, webservice可以從以上介上的方法來進行調用嗎?
我試了Axis2 內建的getVersion怎麼都調不出來呢?
在ie輸入:
http://localhost:8080/axis2/services/Version?param0="hi"
回應的是HTTP500 內部伺服錯誤
http://localhost:8080/axis2/services/HelloWorld/sayHello?
param0="ningkun"将会看到,"Hello,ningkun"的消息。
=====================================================
請問 一下, webservice可以從以上介上的方法來進行調用嗎?
我試了Axis2 內建的getVersion怎麼都調不出來呢?
在ie輸入:
http://localhost:8080/axis2/services/Version?param0="hi"
回應的是HTTP500 內部伺服錯誤
2 楼
紧急下潜
2008-10-15
经我研究axis2的pojo这种方式有问题,在生成的soap消息内,会加上一个特殊属性type="类名"
但是在wsdl定义中是找不到这个属性定义的,有的soap解析会出问题的,这不是标准通用的方式
但是在wsdl定义中是找不到这个属性定义的,有的soap解析会出问题的,这不是标准通用的方式
3 楼
ningkun
2008-10-15
紧急下潜 写道
经我研究axis2的pojo这种方式有问题,在生成的soap消息内,会加上一个特殊属性type="类名" 但是在wsdl定义中是找不到这个属性定义的,有的soap解析会出问题的,这不是标准通用的方式
目前尚未发现,有待进一步研究。
4 楼
ningkun
2008-10-15
liang1022 写道
setp4:启动tomcat,在浏览器中输入: http://localhost:8080/axis2/services/HelloWorld/sayHello? param0="ningkun"将会看到,"Hello,ningkun"的消息。 ===================================================== 請問 一下, webservice可以從以上介上的方法來進行調用嗎? 我試了Axis2 內建的getVersion怎麼都調不出來呢? 在ie輸入: http://localhost:8080/axis2/services/Version?param0="hi" 回應的是HTTP500 內部伺服錯誤
不是吧,正常情况下是可以得到回应的啊。
5 楼
紧急下潜
2008-10-15
ningkun 写道
紧急下潜 写道
经我研究axis2的pojo这种方式有问题,在生成的soap消息内,会加上一个特殊属性type="类名" 但是在wsdl定义中是找不到这个属性定义的,有的soap解析会出问题的,这不是标准通用的方式
目前尚未发现,有待进一步研究。
axis2有一个SOAPMonitor,你可以配置好用它查看发送的soap消息
本来我也没注意到这个问题,我是在使用tuscany做客户端调用axis2的pojo服务端的时候,出问题了,死循环导致溢出,后来跟踪eclipse的sdo实现发现到这个问题的,因为这个type属性在wsdl和schema中未定义,所以导致循环解析出错
6 楼
liang1022
2008-10-16
ningkun 写道
liang1022 写道
setp4:启动tomcat,在浏览器中输入: http://localhost:8080/axis2/services/HelloWorld/sayHello? param0="ningkun"将会看到,"Hello,ningkun"的消息。 ===================================================== 請問 一下, webservice可以從以上介上的方法來進行調用嗎? 我試了Axis2 內建的getVersion怎麼都調不出來呢? 在ie輸入: http://localhost:8080/axis2/services/Version?param0="hi" 回應的是HTTP500 內部伺服錯誤
不是吧,正常情况下是可以得到回应的啊。
我用 .Net WebServiceStudio 2.0 的工具來測試是正常,
但我比較好奇的是, 可以使用原作者 所提的方式,在IE的輸入網址來Resquest
,真的可以嗎??
7 楼
点子二木
2008-11-04
难道说还有其他形式吗