`
wfzhanga
  • 浏览: 68499 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

axis webService实例

阅读更多

Axis 简单说明:

 

1. Lib 包引用

2.web.xml配置

<listener>

        <listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener</listener-class>

    </listener>

 

    <servlet>

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

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

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

    </servlet>

    <servlet>

        <display-name>Axis Admin Servlet</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>

    <servlet>

        <display-name>SOAPMonitorService</display-name>

        <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>

 

    <session-config>

        <!-- Default to 5 minute session timeouts -->

        <session-timeout>5</session-timeout>

    </session-config>

 

    <mime-mapping>

        <extension>wsdl</extension>

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

    </mime-mapping>

 

 

    <mime-mapping>

        <extension>xsd</extension>

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

    </mime-mapping>

 

3.添加相应的axis配置文件

<?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">

 

    <handler type="java:org.apache.axis.handlers.http.URLMapper"

        name="URLMapper" />

 注:定义相关webservice访问类

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

        <parameter name="className"value="com.axis.service.UserManageWebService" />

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

注:定义相关webservice访问类中方法传递参数类型,其中User为客户端相对应UserBean的类型。

         <beanMapping languageSpecificType="java:com.axis.bean.UserBean" qname="n1:user" xmlns:n1="urn:User"  />

         <parameter name="scope"  value="session" />

    </service>

    <transport name="http">

        <requestFlow>

            <handler type="URLMapper" />

        </requestFlow>

    </transport>

</deployment>

 

4.关于spring与 axis的相关问题

如上:com.axis.service.UserManageWebService,在axis配置文件中定义,所以其内的DAO对象实例化不能进行spring自动注入,需要手动进行注入,如下是相关的解决方法:

 

定义相关mapping:

 

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

import org.springframework.context.ApplicationContext;

import org.springframework.web.context.WebApplicationContext;

importorg.springframework.web.context.support.WebApplicationContextUtils;

 

 

public class SpringInit implements ServletContextListener {

   

 

    private static WebApplicationContext springContext;

   

    public SpringInit() {

        super();

    }

   

    public void contextInitialized(ServletContextEvent event) {

        springContext = WebApplicationContextUtils.getWebApplicationContext(event.getServletContext());

    }

   

 

    public void contextDestroyed(ServletContextEvent event) {

    }

   

    public static ApplicationContext getApplicationContext() {

        return springContext;

    }

 

   

}

Mapping在Web.xml中配置:

<listener>

 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<listener>

        <listener-class>gxlu.gmap.web.util.SpringInit</listener-class>

</listener>

 

然后在服务端方法中进行调用相关配置的Bean就可以了:

userDaoOther = (UserDao) SpringInit.getApplicationContext().getBean("userDaoOther");

 

 

5.服务端调用:

 

1)引用lib如下:

2)调用相关方法:

 

String url = "http://localhost:7001/gmap/services/userManage";

 

            Service service = new Service();

            Call call = (Call) service.createCall();

//定义本地User类,关联到服务UserBean

            QName  qn = new QName("urn:User","user");

            call.registerTypeMapping(User.class, qn,

                neworg.apache.axis.encoding.ser.BeanSerializerFactory(User.class,qn),

                neworg.apache.axis.encoding.ser.BeanDeserializerFactory(User.class,qn));

            call.setTargetEndpointAddress(new  java.net.URL(url));

//调用服务端方法register

            call.setOperationName(new QName("user","register"));

            User user=new User();

            user.setUserName("webservicetest1");

            user.setLoginName("webservicetest1");

            user.setPassword("123");

            user.setUserId(1);

            user.setTelephone("13597436721");

            user.setEnabled(1);

            user.setCreator("webservice");

           

            Integer ret = (Integer) call.invoke(new Object[] {user });

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics