AXIS1.4部署

還是那個項目 由於中間件用的VC,而且用的是AXIS1.3
所以之前用AXIS2實現的服務被它解析出來總是有問題,明明傳的是數組過去,結果生成的代理類卻不是數組,問題出在了標籤的不一致上 AXIS2已經不支持用array類型了…………

所以我得改,把之前的服務改用axis1的來實現

之前看過,感覺挺麻煩,就沒認真看了,就找了個部署方便的AXIS2來做,現在得硬着頭皮上了…………

不過話說回來,認真看過後感覺也就那麼回事,沒啥難的,這人啊 真得有壓力纔有動力……

還是說說axis1實現webservice的過程吧
本來要上apache下1.3的版本的 結果鏈接都出錯了,就下了個1.4的用用……

把源文件都下下來了,把裏面那個帶例子的文件夾中的lib文件下要用的jar包都放到自己工程中,然後將web.xml中配上


<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>
org.apache.axis.transport.http.AxisServlet
</servlet-class>
</servlet>

<servlet>
<servlet-name>AdminServlet</servlet-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>
<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>



接着將要提供服務的bean複製到webroot目錄下,改名爲.jws即可以
在地址欄輸入http://localhost:8080/XX/XX.jws
就能看到相應的wsdl

這是其中一種部署方式。

那天和那中間件合的時候又出了點問題,這樣部署後的wsdl文件中比較亂,有很多ip啊什麼的多餘信息,於是在那人的要求下換成了wsdd部署,如下

server-config.wsdd:
<?xml version="1.0" encoding="UTF-8"?>
<deployment name="defaultClientConfig"
xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
xmlns:handler="http://xml.apache.org/axis/wsdd/providers/handler">

<globalConfiguration>
<parameter name="disablePrettyXML" value="true"/>
<parameter name="dotNetSoapEncFix" value="true"/>
<parameter name="enableNamespacePrefixOptimization" value="false"/>
<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>
<!-- uncomment this if you want the SOAP monitor -->
<!--
<handler type="java:org.apache.axis.handlers.SOAPMonitorHandler"/>
-->
</requestFlow>
<!-- uncomment this if you want the SOAP monitor -->
<!--
<responseFlow>
<handler type="java:org.apache.axis.handlers.SOAPMonitorHandler"/>
</responseFlow>
-->
</globalConfiguration>

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


<service name="FileSearch" provider="java:RPC">
<parameter name="scope" value="Request"/>
<parameter name="className" value="hpdfs.FileSearchServiceImpl"/>
<parameter name="allowedMethods" value="*"/>
<namespace>http://FileSearch</namespace>
<beanMapping qname="myNS:Fileinfo" xmlns:myNS="http://FileSearch/Beans" languageSpecificType="java:bit.hpdfs.POJO.Fileinfo"/>
<beanMapping qname="myNS:RelatedPic" xmlns:myNS="http://FileSearch/Beans" languageSpecificType="java:bit.hpdfs.POJO.Relatedpic"/>
<beanMapping qname="myNS:FileDetailsInfo" xmlns:myNS="http://FileSearch/Beans" languageSpecificType="java:hpdfs.FileDetailsInfo"/>
<beanMapping qname="myNS:FileBasicInfo" xmlns:myNS="http://FileSearch/Beans" languageSpecificType="java:hpdfs.FileBasicInfo"/>
<beanMapping qname="myNS:FileDirInfo" xmlns:myNS="http://FileSearch/Beans" languageSpecificType="java:hpdfs.FileDirInfo"/>
</service>

<transport name="http">
<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:wsdl"
value="org.apache.axis.transport.http.QSWSDLHandler"/>
<requestFlow>
<handler type="URLMapper"/>
<handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
</requestFlow>
</transport>

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

</deployment>


將這個文件放到WEB-INF目錄下即可,注意<service></service> 部分,就是服務部署描述,按字面意思就能明白。然後在地址欄輸入http://localhost:8080/XX/services
就能看到相應的服務列表 點擊鏈接就能查看相應服務的wsdl

和AXIS2挺像,不過在AXIS2中我通過在地址欄上輸入服務和相應的方法名就能調用相應服務的方法,不過在AXIS1中似乎不行,還是我沒寫對……有時間在看看~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章