在集成springmvc+axis下webservice的开发与部署

一、DEMO文件样例

二、项目代码
------------------------------------------------------
package TestAxis;
public interface TestI {
    publicString getStr(String str);
}
------------------------------------------------------
package TestAxis;
public class TestImpl implements TestI {
    publicString getStr(String str) {
       returnstr;
    }
}
------------------------------------------------------
package TestAxis;

import org.springframework.context.ApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
importorg.springframework.remoting.jaxrpc.ServletEndpointSupport;
服务接口代理类
@SuppressWarnings("deprecation")
public class TestProxyService extends ServletEndpointSupportimplements TestI {
   
    privatestatic ApplicationContext context = null;
    privatestatic TestI testI;
   
   static{
       context =new ClassPathXmlApplicationContext("spring-cxf.xml");
       testI =(TestI)context.getBean("aa");
    }
   
    publicString getStr(String str) {
       returntestI.getStr(str);
    }
}
------------------------------------------------------
spring-cfg.xml配置文件如下:
<bean id="aa"class="TestAxis.TestImpl"></bean>

配置web.xml文件:加上下面代码
<!-- axis servlet start -->
<servlet>
   <display-name>Apache-AxisServlet</display-name>
   <servlet-name>AxisServlet</servlet-name>
   <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</servlet>
<servlet>
   <display-name>Axis AdminServlet</display-name>
   <servlet-name>AdminServlet</servlet-name>
   <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>
   <load-on-startup>100</load-on-startup>
</servlet>
<!-- axis servlet end -->

<!-- axis mapping start -->
<servlet-mapping>
   <servlet-name>AxisServlet</servlet-name>
   <url-pattern>*.jws</url-pattern>
</servlet-mapping>
<servlet-mapping>
   <servlet-name>AxisServlet</servlet-name>
   <url-pattern>/services_axis*</url-pattern>
</servlet-mapping>
<!-- axis mapping end -->

spring-config.wsdd配置文件代码
<deploymentxmlns="http://xml.apache.org/axis/wsdd/"
      xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
      <handler name="URLMapper"
             type="java:org.apache.axis.handlers.http.URLMapper"/>  
      <!-- 系统服务 -->
      <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="test"provider="java:RPC">
            <parameter name="className"value="TestAxis.TestProxyService"></parameter>
            <parameter name="allowedMethods"value="*"></parameter>
      </service>
      
      <transport name="http">
             <requestFlow>
                    <handler type="URLMapper" />
             </requestFlow>
      </transport>
</deployment>
---------------------------------------------------------
用tomcat或weblogic启动项目后:
IE: http://localhost:8080/epControl/services_axis/test

IE: http://localhost:8080/epControl/services_axis/test?wsdl

出现如上图证明服务已发布成功

---------------------------------------------------------
axis客户端(client)测试
---------------------------------------------------------
package TestAxis;
import java.net.MalformedURLException;
import java.net.URL;
import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class TestAxisClient {
    publicstatic void main(String[] args) {

StringwsdlURL ="http://localhost:8080/epControl/services_axis/test?wsdl";
       StringnameSpaceURI ="http://localhost:8080/epControl/services_axis/test";
      //创建调用对象
       Serviceservice = new Service();
       try {
          Call call =(Call)service.createCall();
         call.setOperationName(new QName(nameSpaceURI,"getStr"));
         call.setTargetEndpointAddress(new URL(wsdlURL));
          Object obj =call.invoke(new Object[]{"你好"});
         if(obj!=null){
            System.out.println(obj);
          }
       } catch(ServiceException e) {
         e.printStackTrace();
       } catch(MalformedURLException e) {
         e.printStackTrace();
       } catch(RemoteException e) {
         e.printStackTrace();
       }
    }
}

(0)

相关推荐