jjklm

          axis 開發 web services

          一 、Axis的運行需要如下組件包

          axis.jar、jaxrpc.jar、saaj.jar、commons-logging.jar、commons-discovery.jar、wsdl4j.jar、符合JAXP-1.1的XML處理器。
          二、在WEB-INF下建立server-config.xml文件
          代碼示例如下:
          <?xml version="1.0" encoding="UTF-8"?>
          <deployment xmlns="? <parameter name="attachments.Directory" value="D:\eclipse3.1\workspace\ForWebservice\WEB-INF\attachments"/>
          ? <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>
          ? <parameter name="sendXsiTypes" value="true"/>
          ? <parameter name="sendMultiRefs" value="true"/>
          ? <parameter name="sendXMLDeclaration" value="true"/>
          ? <parameter name="axis.sendMinimizedElements" 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="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
          ?<handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
          ?<service name="Version" provider="java:RPC">
          ? <parameter name="allowedMethods" value="getVersion"/>
          ? <parameter name="className" value="org.apache.axis.Version"/>
          ?</service>
          ?<!--這里就是我們提供的服務名稱-->
          ? <service name="FileProcessEnter" provider="java:RPC">
          ? <parameter name="allowedMethods" value="*"/>
          <!--我們程序中對應的JAVA類的名稱-->
          ? <parameter name="className" value="com.nci.fm.file.FileProcessEnter"/>
          ?</service>
          ?<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>
          ?<transport name="local">
          ? <responseFlow>
          ?? <handler type="LocalResponder"/>
          ? </responseFlow>
          ?</transport>
          ?<transport name="http">
          ? <requestFlow>
          ?? <handler type="URLMapper"/>
          ?? <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
          ? </requestFlow>
          ?</transport>
          </deployment>
          三、在WEB-INF中建立web.xml文件
          代碼示例如下:
          <?xml version="1.0" encoding="ISO-8859-1"?>
          <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "
          <web-app>
          ?<listener>
          ??????? <listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener</listener-class>
          ??? </listener>

          ??? <filter>
          ??????? <filter-name>Set Character Encoding</filter-name>
          ??????? <filter-class>com.nci.jfw.system.filter.SetCharacterEncodingFilter</filter-class>
          ??????? <init-param>
          ??????????? <param-name>encoding</param-name>
          ??????????? <param-value>GB2312</param-value>
          ??????? </init-param>
          ??? </filter>
          ??? <filter-mapping>
          ??????? <filter-name>Set Character Encoding</filter-name>
          ??????? <servlet-name>action</servlet-name>
          ??? </filter-mapping>
          ????? <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>?
          ??? <mime-mapping>
          ??????? <!-- WML Source -->
          ??????? <extension>wml</extension>
          ??????? <mime-type>text/vnd.wap.wml</mime-type>
          ??? </mime-mapping>
          ??? <mime-mapping>
          ??????? <!-- Compiled WML -->
          ??????? <extension>wmlc</extension>
          ??????? <mime-type>application/vnd.wap.wmlc</mime-type>
          ??? </mime-mapping>
          ??? <mime-mapping>
          ??????? <!-- WML Script Source -->
          ??????? <extension>wmls</extension>
          ??????? <mime-type>text/vnd.wap.wmlscript</mime-type>
          ??? </mime-mapping>
          ??? <mime-mapping>
          ??????? <!-- Compiled WML Script -->
          ??????? <extension>wmlscriptc</extension>
          ??????? <mime-type>application/vnd.wap.wmlscriptc</mime-type>
          ??? </mime-mapping>
          ??? <mime-mapping>
          ??????? <extension>wrl</extension>
          ??????? <mime-type>x-world/x-vrml</mime-type>
          ??? </mime-mapping>
          ??? <mime-mapping>
          ??<extension>wsdl</extension>
          ??<mime-type>text/xml</mime-type>
          ??? </mime-mapping>
          ??? </web-app>
          四、測試類
          代碼示例如下:
          package test;

          import java.io.File;
          import java.io.FileInputStream;
          import java.io.IOException;
          import java.io.InputStream;

          import javax.xml.namespace.QName;

          import org.apache.axis.client.Call;
          import org.apache.axis.client.Service;
          public class TestCallWS {
          ??public static byte[] getBytesFromFile(File file) throws IOException {
          ???????? InputStream is = new FileInputStream(file);
          ????
          ???????? // 獲得file的size
          ???????? long length = file.length();
          ????
          ???????? // You cannot create an array using a long type.
          ???????? // It needs to be an int type.
          ???????? // Before converting to an int type, check
          ???????? // to ensure that file is not larger than Integer.MAX_VALUE.
          ???????? if (length > Integer.MAX_VALUE) {
          ???????????? // File is too large
          ???????? }
          ????
          ???????? // Create the byte array to hold the data
          ???????? byte[] bytes = new byte[(int)length];
          ????
          ???????? // Read in the bytes
          ???????? int offset = 0;
          ???????? int numRead = 0;
          ???????? while (offset < bytes.length
          ??????????????? && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
          ???????????? offset += numRead;
          ???????? }
          ????
          ???????? // Ensure all the bytes have been read in
          ???????? if (offset < bytes.length) {
          ???????????? throw new IOException("Could not completely read file "+file.getName());
          ???????? }
          ????
          ???????? // Close the input stream and return bytes
          ???????? is.close();
          ???????? return bytes;
          ???? }
          ??
          ??public static void main(String[] args){
          ???try{
          ????java.io.File f=new java.io.File("d:\\Blue.jpg");
          ????System.out.println("File'S LENGH="+f.length());
          ????System.out.println("File is OK!");
          ????byte[] bytes = new byte[(int)f.length()];
          ????
          ????bytes = getBytesFromFile(f);
          ????System.out.println("bytes's length="+bytes.length);
          ????System.out.println("bytes is OK!");
          ????//
          ????String endpoint = "
          ????System.out.println("endpoint is OK!");
          ????//
          ????Service? service = new Service();
          ????Call? call? = (Call) service.createCall();
          ????System.out.println("Call is OK!");
          ????//
          ????call.setTargetEndpointAddress(new java.net.URL(endpoint) );
          ????call.setOperationName(new QName("
          ????System.out.println("setOperationName is OK!");
          ????//call.addParameter("bytes",org.apache.axis.encoding.XMLType.XSD_BYTE,javax.xml.rpc.ParameterMode.IN);
          ????
          ????//call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);

          ????//
          ????String ret = (String) call.invoke( new Object[] {"EPMS","epms",bytes,"jpg" } );
          ????System.out.println(ret);
          ????
          ???}catch(Exception e){
          ????e.printStackTrace();
          ???}
          ??}
          ?}


          ?

          posted on 2007-01-23 11:13 天涯孤客 閱讀(113) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 饶阳县| 嵊泗县| 米易县| 咸宁市| 甘南县| 华阴市| 余姚市| 色达县| 镇沅| 鄄城县| 竹北市| 双辽市| 修水县| 兖州市| 昭通市| 迭部县| 呼图壁县| 棋牌| 阿勒泰市| 盈江县| 新竹市| 梧州市| 万州区| 莒南县| 连云港市| 远安县| 宁津县| 深泽县| 周至县| 伊春市| 平利县| 林甸县| 从江县| 额尔古纳市| 阿拉善右旗| 隆回县| 通海县| 泸定县| 康保县| 和龙市| 鸡西市|