Web Service学习之axis

看着网上的资料学习了一下,做点笔记以防以后忘记。

 

一、准备工作:

    到axis官方网站下载相应的jar包,我下的是1.4final版。

    http://ws.apache.org/axis/

二、建立项目:

    直接在MyEclipse中建立了一个web项目。将相应的jar包拷贝到lib文件夹下

三、创建一个WebService服务

    直接创建一个类HelloClient.java

package com;

public class HelloServer {
	public String sayHello(String name) {
		return "Hello " + name;
	}
}

 

    axis支持两种方式创建,一种是将编写好的java文件改为*.jws文件。个人觉得这样不好,所以就用另外一种,采用在server-config.xml文件中配置的方式。注意:该文件位置为WEB-INF目录下

<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
	xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
	<globalConfiguration>
		<parameter name="adminPassword" value="admin" />
		<parameter name="enableNamespacePrefixOptimization"
			value="false" />
		<parameter name="dotNetSoapEncFix" value="true" />
		<parameter name="disablePrettyXML" value="true" />
		<parameter name="sendMultiRefs" value="true" />
		<parameter name="sendXsiTypes" value="true" />
		<parameter name="attachments.implementation"
			value="org.apache.axis.attachments.AttachmentsImpl" />
		<parameter name="sendXMLDeclaration" value="true" />

		<requestFlow>
			<handler type="java:org.apache.axis.handlers.JWSHandler">
				<parameter name="scope" value="session" />
			</handler>
			<handler type="java:org.apache.axis.handlers.JWSHandler">
				<parameter name="scope" value="request" />
				<parameter name="extension" value=".jwr" />
			</handler>
		</requestFlow>
	</globalConfiguration>

	<handler name="LocalResponder"
		type="java:org.apache.axis.transport.local.LocalResponder" />
	<handler name="URLMapper"
		type="java:org.apache.axis.handlers.http.URLMapper" />
	<handler name="Authenticate"
		type="java:org.apache.axis.handlers.SimpleAuthenticationHandler" />

	<service name="AdminService" provider="java:MSG">
		<parameter name="allowedMethods" value="AdminService" />
		<parameter name="enableRemoteAdmin" value="false" />
		<parameter name="className" value="org.apache.axis.utils.Admin" />
		<namespace>http://xml.apache.org/axis/wsdd/</namespace>
	</service>

	<service name="Version" provider="java:RPC">
		<parameter name="allowedMethods" value="getVersion" />
		<parameter name="className" value="org.apache.axis.Version" />
	</service>

	<!--    �����Զ����� -->
	<service name="HelloServer" provider="java:RPC">
		<parameter name="allowedMethods" value="*" />
		<parameter name="className" value="com.HelloServer" />
	</service>

	<transport name="http">
		<requestFlow>
			<handler type="URLMapper" />
			<handler
				type="java:org.apache.axis.handlers.http.HTTPAuthHandler" />
		</requestFlow>
		<parameter name="qs:list"
			value="org.apache.axis.transport.http.QSListHandler" />
		<parameter name="qs:wsdl"
			value="org.apache.axis.transport.http.QSWSDLHandler" />
		<parameter name="qs:method"
			value="org.apache.axis.transport.http.QSMethodHandler" />
	</transport>

	<transport name="local">
		<responseFlow>
			<handler type="LocalResponder" />
		</responseFlow>
	</transport>
</deployment>

   web.xml文件中的配置如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<listener>
		<listener-class>
			org.apache.axis.transport.http.AxisHTTPSessionListener
		</listener-class>
	</listener>

	<servlet>
		<servlet-name>AxisServlet</servlet-name>
		<display-name>Apache-Axis Servlet</display-name>
		<servlet-class>
			org.apache.axis.transport.http.AxisServlet
		</servlet-class>
	</servlet>

	<servlet>
		<servlet-name>AdminServlet</servlet-name>
		<display-name>Axis Admin Servlet</display-name>
		<servlet-class>
			org.apache.axis.transport.http.AdminServlet
		</servlet-class>
		<load-on-startup>100</load-on-startup>
	</servlet>

	<servlet>
		<servlet-name>SOAPMonitorService</servlet-name>
		<display-name>SOAPMonitorService</display-name>
		<servlet-class>
			org.apache.axis.monitor.SOAPMonitorService
		</servlet-class>
		<init-param>
			<param-name>SOAPMonitorPort</param-name>
			<param-value>5001</param-value>
		</init-param>
		<load-on-startup>100</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>AxisServlet</servlet-name>
		<url-pattern>/servlet/AxisServlet</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>AxisServlet</servlet-name>
		<url-pattern>*.jws</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>AxisServlet</servlet-name>
		<url-pattern>/services/*</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>SOAPMonitorService</servlet-name>
		<url-pattern>/SOAPMonitor</url-pattern>
	</servlet-mapping>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

四、部署启动tomcat:

在浏览器地址栏输入

http://localhost:8080/axisWebServiceServer/services

可以看到已有的WebService

http://localhost:8080/axisWebServiceServer/services/HelloServer?wsdl

可以看到自己写的WebService

 

五、测试调用WebService

package com;

import java.net.MalformedURLException;
import java.rmi.RemoteException;

import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class HelloClient {

	public static void main(String[] args) {
		String status = "aaaaaaa";
		String endPoint = "http://localhost:8080/axisWebServiceServer/services/HelloServer";
		String operation = "sayHello";
		Service service = new Service();

		try {
			Call call = (Call) service.createCall();
			call.setTargetEndpointAddress(new java.net.URL(endPoint));
			call.setOperationName(operation);
			String xml = (String) call.invoke(new Object[] { status }); 
			System.out.println(xml);
		} catch (ServiceException e) {
			e.printStackTrace();
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (RemoteException e) {
			e.printStackTrace();
		}

	}

}

 

 

成功!!

以上是简单应用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值