webservice AXIS 1.4 接口发布和客户端调用

AXIS 1.4 接口发布

  • 添加jar文件

链接:https://pan.baidu.com/s/1eMCse03V9C1h0z1GZnTGoQ 
提取码:hdlg  

  • 编写接口类HelloWorld.java
  • 配置相关文件如下:
  1. web-inf 下新建文件 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="attachments.Directory" value="./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="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper" />
    <handler name="Authenticate"
        type="java:org.apache.axis.handlers.SimpleAuthenticationHandler" />
    <service name="HelloWorld" provider="java:RPC">
        <parameter name="allowedMethods" value="*" />
        <parameter name="className" value="com.ufgov.is.app.thirdInterface.HelloWorld" />
    </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>
  1. web.xml  添加
    <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>
	
		<mime-mapping>

		<extension>wsdl</extension>

		<mime-type>text/xml</mime-type>

	</mime-mapping>

AXIS 1.4 接口客户端调用

  public Map getAxisService(String URL, String method, Map params) throws ServiceException, MalformedURLException,
    RemoteException {
    Service service = new Service();
    Map resultMap = new HashMap();
    Call call = (Call) service.createCall();
    call.setTargetEndpointAddress(new java.net.URL(URL));
    call.setOperationName(method);//method  发布调用的方法
    //    resultMap = (HashMap) call.invoke(new Object[] { params });
    String aa = (String) call.invoke(new Object[] { "params" });

    System.out.println(aa);
    return resultMap;
  }

AXIS 1.4 异常处理

WebService using Spring throwed org.xml.sax.SAXException: Bad envelope tag: htm

spring中的过滤权限的问题,在调用服务的访问路径时,被spring的顾虑器给拦截了,最后返回一个空的XML文件,当然解析不了,就会报

org.xml.sax.SAXException: Bad envelope tag:  htm错误;

解决方法:

	<filter>
		<filter-name>requestWrappingFilter</filter-name>
		<filter-class>
			com.ufgov.app.manager.http.internal.RequestWrappingFilter
		</filter-class>
		<init-param>
			<param-name>unCheckSessionUrls</param-name>
			<param-value>/ISIT/services/BackForPayService,/DB/dbproxy,/maintain/uploadFile.action,/maintain/downloadLogs.action,/portal/save2DbSMS.action,/portal/sendPwdMail.action,/portal/getPageList4StaticAction.action,/portal/getJsonData.action,/portal/getPageJsonData.action,/portal.ca/pageDispatcher.action,/admin.license/GetServerInfoServlet,/portal.cms/downloadFile.action,/portal.integration/service/IntegrateService,/IS/services/HelloWorld</param-value>
		</init-param>
	</filter>

 可以在spring的文件中增加一个   <intercept-url pattern="/AxisDeviceServerImpl.jws" filters="none"/>让spring不拦截以这个路径的访问。

 也可在客户端直接增加两行验证代码去过滤掉

 call.getMessageContext().setUsername("module");  //用户名验证
 call.getMessageContext().setPassword("123456");

猜你喜欢

转载自blog.csdn.net/limingdepoxiao/article/details/86492154