久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

如何使用axis發(fā)布webservices

 WindySky 2008-09-23
本文借鑒了網(wǎng)上的兩篇文章:

 

    AXIS學(xué)習(xí)筆記 

 

    使用Handler來增強Web服務(wù)的功能

 

 

 

我們使用的axis版本是apache axis-bin-1_3,可以到apache網(wǎng)站下載,。

 

 

1.環(huán)境變量設(shè)置

 

 

AXIS_HOME 

 

 

axis-bin-1_2.zip解壓的目錄(我的是在 F:\opensource\axis-1_2)
   AXIS_LIB

 

 

 %AXIS_HOME%\lib

 

 

2.導(dǎo)入jar包

 

 

axisa解壓縮后,,復(fù)制lib目錄下列jar包到應(yīng)用目錄的lib目錄:

 

 

 

 

 

saaj.jar

 

 

wsdl4j-1.5.1.jar

 

 

jaxrpc.jar

 

 

commons-logging-1.0.4.jar

 

 

commons-discovery-0.2.jar

 

 

axis-schema.jar

 

 

axis-ant.jar

 

 

axis.jar

 

 

3.修改web.Xml

 

 

axis需要的servlet復(fù)制到應(yīng)用的web.xml文件里面,注意順序,。

 

 

重新啟動服務(wù),,可以訪問“/servlet/AxisServlet”試一下,

 

 

比如:http://10.162.11.70:9080/newsdaoa/servlet/AxisServlet

 

 

 

 

        <servlet id="Servlet_12">

 

 

           <servlet-name>AxisServlet</servlet-name>

 

 

           <display-name>Apache-Axis Servlet</display-name>

 

 

           <servlet-class>

 

 

               org.apache.axis.transport.http.AxisServlet

 

 

           </servlet-class>

 

 

        </servlet>

 

 

        <servlet id="Servlet_13">

 

 

          <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 id="Servlet_14">

 

 

         <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 id="ServletMapping_12">

 

 

          <servlet-name>AxisServlet</servlet-name>

 

 

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

 

 

        </servlet-mapping>

 

 

        <servlet-mapping id="ServletMapping_13">

 

 

          <servlet-name>AxisServlet</servlet-name>

 

 

          <url-pattern>*.jws</url-pattern>

 

 

        </servlet-mapping>

 

 

        <servlet-mapping id="ServletMapping_14">

 

 

          <servlet-name>AxisServlet</servlet-name>

 

 

          <url-pattern>/services/*</url-pattern>

 

 

        </servlet-mapping>

 

 

        <servlet-mapping id="ServletMapping_15">

 

 

          <servlet-name>SOAPMonitorService</servlet-name>

 

 

          <url-pattern>/SOAPMonitor</url-pattern>

 

 

        </servlet-mapping>

 

 

 

 

4.添加服務(wù)

 

 

server-config.wsdd文件復(fù)制到發(fā)布應(yīng)用的WEB-INF目錄下,這就是AXIS的配置文件,,以后所有的服務(wù)發(fā)布描述都會在里面找到,。

 

 

 

 

如果還沒有server-config.wsdd文件,可以先寫一個發(fā)布描述文件,,然后用axis來生成,,以后需要發(fā)布新的服務(wù),直接往里面添加即可,。

 

 

比如有一個HelloWorld.class類,,里面有sayHello(String msg)方法,想把它發(fā)布webservices,先寫發(fā)布文件deploy.wsdd文件,,即SOAP服務(wù)發(fā)布描述文件deploy.wsdd

<deployment xmlns="http://xml./axis/wsdd/" xmlns:java="http://xml./axis/wsdd/providers/java">
    <service name="HelloWorld" provider="java:RPC">
        <parameter name="className" value="HelloWorld"/>
        <parameter name="allowedMethods" value="sayHello"/>
    </service>
</deployment>

 

 


進(jìn)入dos窗口,,執(zhí)行下列命令:

 

 

java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd
即可生成server-config.wsdd文件,。

 

 

 

 

如果想發(fā)布新的服務(wù),,直接往server-config.wsdd里面添加service描述,,比如想把知識管理模塊導(dǎo)入知識功能發(fā)布成webservices,,對應(yīng)的程序文件是com.lc.v3.ecp.km.inteface.KmDelegate.java,需要發(fā)布的方法是importKm(String kmXmlStr),,將此文件編譯成class后,,放到發(fā)布系統(tǒng)的相應(yīng)目錄下,,往server-config.wsdd添加下列描述:

 

 

 

 

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

 

 

<parameter name="className" value="com.lc.v3.ecp.km.inteface.KmDelegate"/>

 

 

  <parameter name="allowedMethods" value="importKm"/>

 

 

 </service>

 

 

 

 

重新啟動服務(wù),,一個新的webservices就發(fā)布成功了,,如果系統(tǒng)發(fā)布地址是http://10.162.11.70:9080/newsdaoa

 

 

調(diào)用的url是:http://10.162.11.70:9080/newsdaoa/services/ImportKm

 

 

 

 

 

 

5.給服務(wù)添加Handler

 

 

J2EE Web 服務(wù)中的Handler技術(shù)特點非常像Servlet技術(shù)中的Filter,。我們知道,,在Servlet中,當(dāng)一個HTTP到達(dá)服務(wù)端時,,往往要經(jīng)過多個Filter對請求進(jìn)行過濾,,然后才到達(dá)提供服務(wù)的Servlet,這些Filter的功能往往是對請求進(jìn)行統(tǒng)一編碼,,對用戶進(jìn)行認(rèn)證,,把用戶的訪問寫入系統(tǒng)日志等。相應(yīng)的,,Web服務(wù)中的Handler通常也提供一下的功能:

 

 

  • 對客戶端進(jìn)行認(rèn)證,、授權(quán);

     

  • 把用戶的訪問寫入系統(tǒng)日志,;

     

  • 對請求的SOAP消息進(jìn)行加密,,解密;

     

  • Web Services對象做緩存,。

     

SOAP消息Handler能夠訪問代表RPC請求或者響應(yīng)的SOAP消息,。在JAX-RPC技術(shù)中,SOAP消息Handler可以部署在服務(wù)端,,也可以在客戶端使用,。

 

 

至于如何開發(fā)handler,可以到網(wǎng)上去搜索陳亞強寫的《使用Handler來增強Web服務(wù)的功能》,,人家寫的比較好,,我就不在這廢話了。

 

 

 

 

比如服務(wù)必須有用戶名和密碼才能訪問,,可以添加axis自帶的檢驗認(rèn)證handler,,用戶名和密碼存放在\WEB-INF下的users.lst文件中。handler分別是:

 

 

//訪問者必須提供用戶名和密碼,,只要用戶名和密碼正確即可

 

 

org.apache.axis.handlers.SimpleAuthenticationHandler

 

 

 

 

//訪問者必須提供指定的用戶名和密碼,,用戶名和密碼正確即可

 

 

//在services中用allowedRoles屬性指定訪問的用戶名

 

 

org.apache.axis.handlers.SimpleAuthorizationHandler

 

 

 

 

如果想給上面的ImportKm服務(wù)添加用戶校驗,,并且只允許用戶是pubnet,密碼是123456的用戶訪問,,首先往users.lst添加用戶名和密碼,,格式是:

 

 

pubnet 123456

 

 

user1 pass1

 

 

user2

 

 

user3 pass3

 

 

改變上述server-config.wsdd里面service的描述:

 

 

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

 

 

//添加handler,直接指定java類

 

 

  <requestFlow name="checks">

 

 

    <handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>

 

 

    <handler type="java:org.apache.axis.handlers.SimpleAuthorizationHandler"/>

 

 

  </requestFlow>

 

 

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

 

 

   <parameter name="className" value="com.lc.v3.ecp.km.inteface.KmDelegate"/>

 

 

   <parameter name="allowedMethods" value="importKm"/>

 

 

</service>

 

 

除了上面方式外,,還可以先單獨聲明handler,,然后再添加到service里,比如自己開發(fā)了一個日志handler,,用來記錄每次對webservice的訪問,,程序是com.lc.v3.ecp.pub.webservies. AxisLogHandler,添加方式改變?yōu)椋?

 

 

//先單獨定義日志handler

 

 

<handler name="logging" type="java:com.lc.v3.ecp.pub.webservies.AxisLogHandler">

 

 

   //日志記錄文件

 

 

   <parameter name="filename" value="c:/log/EcpService.log"/>

 

 

</handler>

 

 

 

 

//再往service添加

 

 

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

 

 

<requestFlow name="checks">

 

 

//引用log定義

 

 

    <handler type="logging"/>

 

 

    <handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>

 

 

    <handler type="java:org.apache.axis.handlers.SimpleAuthorizationHandler"/>

 

 

  </requestFlow>

 

 

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

 

 

  <parameter name="className" value="com.lc.v3.ecp.km.inteface.KmDelegate"/>

 

 

  <parameter name="allowedMethods" value="importKm"/>

 

 

  <parameter name="allowedMethods" value="sayHello"/>

 

 

</service>

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多