axis 使用

axis-1_3 (从http://ws.apache.org/axis/下载);

将axis-bin-1_3.zip解压的webapps目录下的 axis目录拷贝到%TOMCAT_HOME%\webapps目录下(最好在%TOMCAT_HOME%\webapps\axis\WEB-INF \lib增加:activation.jar、mail.jar和tools.jar),然后启动tomcat,在浏览器地址栏输入http://localhost:8080/axis/就可以看到 axis的主页面了。
Webservice程序发布

1、编写简单的webservice程序如下:

package test.webservice;



public class Calculator {

public int add(int i1, int i2) {

return i1 + i2;

}



public int subtract(int i1, int i2) {

return i1 - i2;

}



public String show(String arg) {

return arg;

}

}

1、 将程序包拷贝到%TOMCAT_HOME%\webapps \axis\WEB-INF\classes目录下;

2、 配置环境变量

AXIS_HOME = axis-bin-1_3.zip的解压路径

AXISCLASSPATH =  %AXIS_HOME%\lib\axis.jar;%AXIS_HOME%\lib\axis-schema.jar;%AXIS_HOME%\lib\commons-discovery-0.2.jar;%AXIS_HOME%\lib\commons-logging-1.0.4.jar;%AXIS_HOME%\lib\jaxrpc.jar;%AXIS_HOME%\lib\log4j-1.2.8.jar;%AXIS_HOME%\lib\saaj.jar;%AXIS_HOME%\lib\wsdl4j-1.5.1.jar;

3、 编写发布文件deploy.wsdd(该文件的模板可以从%AXIS_HOME%\samples\stock目录下找到),将其放到%TOMCAT_HOME%\webapps\axis \WEB-INF目录下;

<deployment name="test" xmlns="http://xml.apache.org/axis/wsdd/"

xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">



<service name="Calculator" provider="java:RPC">

<!--指定作为webservice的类名-->

<parameter name="className" value="test.webservice.Calculator" />

<!--指定可以被调用的方法,有选择使用逗号间隔,全部使用*-->

<parameter name="allowedMethods" value="add,subtract,show" />

</service>



</deployment>

4、 命令行方式转到%TOMCAT_HOME%\webapps \axis\WEB-INF目录下,使用命令:

java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient -lhttp://localhost/axis/services/AdminService deploy.wsdd

将deploy.wsdd文件转变为server- config.wsdd(其实同时还生成attachments文件夹),这样在tomcat启动时可以被AxisServlet调用初始化。注意:使用命令时tomcat应处于启动状态。

5、 发布完毕,在浏览器地址栏输入http://localhost:8080/axis/services可以看到你发布的webservice了,可以查看具体的wsdl。

6、 java客户端测试程序

package test.webservice;



import javax.xml.rpc.ParameterMode;

import javax.xml.rpc.encoding.XMLType;



import org.apache.axis.client.Call;

import org.apache.axis.client.Service;



public class CalcClient {

public static void main(String[] args) throws Exception {

String endpoint = "http://localhost:8080/axis/services/Calculator";



Service service = new Service();

Call call = (Call) service.createCall();



call.setTargetEndpointAddress(new java.net.URL(endpoint));

// call.setOperationName("add");

call.setOperationName("subtract");

// call.setOperationName("show");



call.addParameter("p1", XMLType.XSD_INT, ParameterMode.IN);

call.addParameter("p2", XMLType.XSD_INT, ParameterMode.IN);

call.setReturnType(XMLType.XSD_INT);



Integer ret = (Integer) call.invoke(new Object[] { new Integer(5), new Integer(3) });

// String ret = (String) call.invoke(new Object[] { "axis你好!" });



System.out.println("The value of webservice return is :" + ret);

}

}


添加用户验证

用户验证使用axis的简单用户验证 handler:SimpleAuthenticationHandler。

1、 在deploy.wsdd文件中增加以下红色字体部分

<deployment name="test" xmlns="http://xml.apache.org/axis/wsdd/"

xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">



<service name="Calculator" provider="java:RPC">

<!--指定作为webservice的类名-->

<parameter name="className" value="test.webservice.Calculator" />

<!--指定可以被调用的方法,有选择使用逗号间隔,全部使用*-->

<parameter name="allowedMethods" value="add,subtract,show" />

<!--指定可以调用用户-->

<parameter name="allowedRoles" value="testname" />

<requestFlow>

<handler type="Authenticate"/>

</requestFlow>

</service>



</deployment>

2、 在%TOMCAT_HOME%\webapps \axis\WEB-INF目录下建立users.lst文件,内容如下:

testname testpass

3、 重复 Webservice 程序发布的第4步,重新发布(也可以直接修改 server-config.wsdd文件 )。

4、 修改客户端调用程序

package test.webservice;



import javax.xml.rpc.ParameterMode;

import javax.xml.rpc.encoding.XMLType;



import org.apache.axis.client.Call;

import org.apache.axis.client.Service;



public class CalcClient {

public static void main(String[] args) throws Exception {

String endpoint = "http://localhost:8080/axis/services/Calculator";



Service service = new Service();

Call call = (Call) service.createCall();



// 用户验证

call.getMessageContext().setUsername("testname"); // 用户名

call.getMessageContext().setPassword("testpass"); // 密码



call.setTargetEndpointAddress(new java.net.URL(endpoint));

// call.setOperationName("add");

call.setOperationName("subtract");

// call.setOperationName("show");



call.addParameter("p1", XMLType.XSD_INT, ParameterMode.IN);

call.addParameter("p2", XMLType.XSD_INT, ParameterMode.IN);

call.setReturnType(XMLType.XSD_INT);



Integer ret = (Integer) call.invoke(new Object[] { new Integer(5), new Integer(3) });

// String ret = (String) call.invoke(new Object[] { "axis 你好! " });



System.out.println("The value of webservice return is :" + ret);

}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值