1. 程式人生 > >建立axis2 webservice服務端方法一

建立axis2 webservice服務端方法一

一、準備工作 匯入需要的jar包: 在這裡插入圖片描述

二、配置web.xml 在web工程的web.xml中新增如下配置:

<servlet>
        <servlet-name>AxisServlet</servlet-name>
        <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
        <load-on-startup>15</load-on-startup>
    </servlet>   
    <servlet-mapping>
        <servlet-name>AxisServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

三、配置server-config.wsdd檔案 在WEB-INF下新增WebService核心檔案server-config.wsdd: 在這裡插入圖片描述

<?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="sendMultiRefs" value="true" />
		<parameter name="disablePrettyXML" value="true" />
		<parameter name="adminPassword" value="admin" />
		<parameter name="attachments.Directory"
			value="D:\myproject\calileo\xxx\WebContent\WEB-INF\attachments" />
		<parameter name="dotNetSoapEncFix" value="true" />
		<parameter name="enableNamespacePrefixOptimization" value="true" />
		<parameter name="sendXMLDeclaration" value="true" />
		<parameter name="attachments.implementation"
			value="org.apache.axis.attachments.AttachmentsImpl" />
		<parameter name="sendXsiTypes" 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" />
 
	<!-- 核心重點:服務釋出,name:表示釋出的service名 -->
	<service name="SjrkkService" provider="java:RPC">
		<!-- 釋出的service介面類,呼叫SjrkkService這個服務,實際執行的此介面 -->
		<parameter name="className" value="com.xxx.ws.SjrkkService" />
	</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.list"
			value="org.apache.axis.transport.http.QSListHandler" />
		<parameter name="qs.method"
			value="org.apache.axis.transport.http.QSMethodHandler" />
		<parameter name="qs:method"
			value="org.apache.axis.transport.http.QSMethodHandler" />
		<parameter name="qs.wsdl"
			value="org.apache.axis.transport.http.QSWSDLHandler" />
	</transport>
	<transport name="local">
		<responseFlow>
			<handler type="LocalResponder" />
		</responseFlow>
	</transport>
</deployment>

四、測試WSDL

五、調WebService

/**
	 * 呼叫webservice的方法.
	 * @param url wsdl連結
	 * @param method 呼叫的介面
	 * @param idCard 傳入的引數
	 * @return
	 * @throws Exception
	 */
	private String getWebServiceResult( String url, String method, String idCard) throws Exception{
		String rtnXml = null;
		try {
			String endpoint = url;
			Service service = new Service();
			Call call = (Call) service.createCall();
		
			call.setTargetEndpointAddress(new java.net.URL(endpoint));
			call.setOperationName(method);
		
			rtnXml = (String) call.invoke(new Object[]{idCard});
			
			
		} catch (Exception e) {
			e.printStackTrace();
		} 
		return rtnXml;
	}