WebServiceアプリケーションのAxis 1.x


WebServiceを研究してから数日が経ちましたが、Axis 2を使った使い方のチュートリアルを見ましたが、自分のwebエンジニアリングにどのように使うかはまだ分かりません.公式のドキュメントを見て、もっと研究する必要があるかもしれません.まず確定できるのは、きっとできるということです.
Axis 1.xとAxis 2.0には大きな違いがあり、組織別に開発されているという.仕方なく、私はまたAxis 1.xに戻りました;私が書いたこのプログラムを以下に記録します.簡単です.Jarパッケージに2つのプロファイルを追加します.
第1、2つのプロファイル
Web.xmlファイルでservletを構成する
 
 
<?xml version="1.0" encoding="UTF-8"?>  
	<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/javaee"  
	    xmlns:xsi="http://www.worg/2001/XMLSchema-instance"  
	    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee    
	    http://java.sun.com/xml/ns/javaee/web-app_2_xsd">  
    <servlet>
        <servlet-name>AxisServlet</servlet-name>
        <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AxisServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>
	  
	    <welcome-file-list>  
	        <welcome-file>index.jsp</welcome-file>  
	    </welcome-file-list>  
	</web-app>  

 
 org.apache.axis.transport.http.AxisServlet
これが私たちサーブレットのクラスです.
Web.xmlとの統合ディレクトリの下でserver-config.wsddを構成します.
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="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="UserServer" provider="java:RPC">  
	        <parameter name="allowedMethods" value="*" />  
	        <parameter name="className" value="com.xiva.bean.UserWebService" />  
	   </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> 

 
この中の多くのコードは、いくつかのwebServiceの設定です.具体的な研究もしていません.
しかし、その中には関心を持たなければならないコードがあります.
 
 
<service name="UserServer" provider="java:RPC">  
	        <parameter name="allowedMethods" value="*" />  
	        <parameter name="className" value="com.xiva.bean.UserWebService" />  
	   </service>

 これは、サービスの2つのパラメータが呼び出しを許可するメソッドとクラス名である、サービスを構成するコードです.
 
 
package com.xiva.bean;

public class UserWebService {
	
	public String sayHello(){
		return "hello";
	}
	
	public String Hello(String name){
		return name + ", hello!";
	} 
	
	public String Login(String name, String password){
		
		if("xiva".equals(name) && "123".equals(password)){
			return "success";
		}
		else
			return "failure";
	}
}

 上は私が書いたクラスコードです!
 
第二に、必要なバッグ
添付ファイルを参照してください.Axis 1.xが開発したパッケージはすべて中にあります.解凍して、プロジェクトにコピーすればいいです.サービスを開始するときは、jarパッケージがプロジェクトの下に送られているかどうかをプロジェクトファイルで確認してください.
 
はい、サービス側のコードはこのように書きました.
 
 
次はAxis 2.xで書いたクライアントのコードです.
 
 
package com.xiva.bean;

import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;

public class LoginClient {

	public static void main(String[] args) throws AxisFault {
		String target = "http://localhost:8080/WebQClient/services/UserServer";
		//target = "http://localhost:8080/axis2/services/MyLoginService";
		RPCServiceClient client = new RPCServiceClient();
		Options options = client.getOptions();
		options.setManageSession(true);
		
		EndpointReference epr = new EndpointReference(target);
		options.setTo(epr);
		
		QName qname = new QName("http://bean.xiva.com", "Login");
		//              ,         
		Object[] result = client.invokeBlocking(qname, new Object[] { "xiva", "123" }, new Class[] { String.class });
		System.out.println(result[0]);
		
		qname = new QName("http://bean.xiva.com", "sayHello");
		result = client.invokeBlocking(qname, new Object[] {}, new Class[] { String.class });
		System.out.println(result[0]);
	}
}