<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    分享java帶來的快樂

    我喜歡java新東西

    在spring中利用axis工具配置webservice成功案例

    第一步:確認你用到的spring bean存在并且有效 比如 inviteService
    第二步:創建要發布的服務方法

    /**
     *
     */
    package com.chinamobile.survey.webservice;

    import java.util.List;

    import org.springframework.remoting.jaxrpc.ServletEndpointSupport;

    import com.chinamobile.survey.entity.vo.ExamPlanContainer;
    import com.chinamobile.survey.invite.business.IInviteService;

    /**
     * @author jianqiang.jiang
     *
     */
    public class InviteEndPoint extends ServletEndpointSupport implements
      IInviteService {
     // 將真實的業務bean包裝成WebService

     private IInviteService inviteService;

     // 該方法由Spring調用,將目標業務bean注入。

     protected void onInit() {
      this.inviteService = (IInviteService) getWebApplicationContext()
        .getBean("inviteService");
     }

     // 將業務bean的業務方法暴露成WebService
     public int getAllowAnswerExamPlanCount(long userId) throws Exception {
      return inviteService.getAllowAnswerExamPlanCount(userId);
     }

     public ExamPlanContainer getAllowAnswerExamPlanContainer(long userId, long offset, long maxRow)
       throws Exception {
      return inviteService.getAllowAnswerExamPlanContainer(userId, offset, maxRow);
     }

     }
    注意里面的 ServletEndpointSupport 和對bean的引用

    第三步.編輯兩個文件
      1.web.xml中
      增加
      <!--  定義AxisServlet-->
     <servlet>
      <servlet-name>AxisServlet</servlet-name>
      <servlet-class>
       org.apache.axis.transport.http.AxisServlet
      </servlet-class>
     </servlet>
     <!--  映射AxisServlet,使用通配符-->
     <servlet-mapping>
      <servlet-name>AxisServlet</servlet-name>
      <url-pattern>/services/*</url-pattern>
     </servlet-mapping>
        2.生成server-config.wsdd,放在WEB-INF下
     

    <deployment xmlns="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="ExamService" provider="java:RPC">
      <parameter name="className"
       value="com.chinamobile.survey.webservice.InviteEndPoint" />
      <parameter name="allowedMethods"
       value="getAllowAnswerExamPlanCount,getAllowAnswerExamPlanContainer" />
      <parameter name="allowedRoles" value="user1,user2" />
     </service>
     <transport name="http">
      <requestFlow>
       <handler type="URLMapper" />
      </requestFlow>
     </transport>
     <beanMapping qname="myNS:ExamPlanContainer"
      xmlns:myNS="urn:BeanService"
      languageSpecificType="java:com.chinamobile.survey.entity.vo.ExamPlanContainer" />
     <beanMapping qname="myNS:WsExamPlan" xmlns:myNS="urn:BeanService"
      languageSpecificType="java:com.chinamobile.survey.entity.vo.WsExamPlan" />

    </deployment>

    注意其中的 返回類型注冊,

    第四步.
    生成客戶端測試代碼:

    package com.chinamobile.survey.webservice;

    import java.util.Iterator;
    import java.util.List;

    import javax.xml.namespace.QName;
    import javax.xml.rpc.ParameterMode;

    import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;
    import org.apache.axis.encoding.XMLType;
    import org.apache.axis.encoding.ser.BeanDeserializerFactory;
    import org.apache.axis.encoding.ser.BeanSerializerFactory;

    import com.chinamobile.survey.entity.vo.ExamPlanContainer;
    import com.chinamobile.survey.entity.vo.WsExamPlan;

    public class ArchiveClient {

     public static void main(String args[]) throws Exception {

      try {
       String endpoint = "http://localhost:8080/exam/services/ExamService";
       Service service = new Service();
       Call call = (Call) service.createCall();

       QName searchresultqn = new QName("urn:BeanService",
         "ExamPlanContainer");
       Class searchresultcls = ExamPlanContainer.class;
       call
         .registerTypeMapping(searchresultcls, searchresultqn,
           new BeanSerializerFactory(searchresultcls,
             searchresultqn),
           new BeanDeserializerFactory(searchresultcls,
             searchresultqn));
       QName wsExamPlanQN = new QName("urn:BeanService", "WsExamPlan");
       Class wsepcls = WsExamPlan.class;
       call.registerTypeMapping(wsepcls, wsExamPlanQN,
         new BeanSerializerFactory(wsepcls, wsExamPlanQN),
         new BeanDeserializerFactory(wsepcls, wsExamPlanQN));

       call.setTargetEndpointAddress(new java.net.URL(endpoint));
       call.setOperationName(new QName("ExamService",
         "getAllowAnswerExamPlanContainer"));

       call.addParameter("userId", XMLType.XSD_LONG, ParameterMode.IN);
       call.addParameter("offset", XMLType.XSD_LONG, ParameterMode.IN);
       call.addParameter("maxRow", XMLType.XSD_LONG, ParameterMode.IN);

       call.setReturnType(searchresultqn);
       ExamPlanContainer result = (ExamPlanContainer) call
         .invoke(new Object[] { new Long(1), new Long(0),
           new Long(1000) });
       if (result != null) {
        List list = result.getExamPlanList();
        for (Iterator iter = list.iterator(); iter.hasNext();) {
         WsExamPlan wsExamPlan = (WsExamPlan) iter.next();
         System.out.println(wsExamPlan.getName());

        }

       }

      } catch (javax.xml.rpc.ServiceException e) {
       e.printStackTrace();
      } catch (java.net.MalformedURLException e) {
       e.printStackTrace();
      } catch (java.rmi.RemoteException e) {
       e.printStackTrace();
      }
     }

     public static void testCount() {
      try {
       String endpoint = "http://localhost:8080/exam/services/ExamService";
       Service service = new Service();
       Call call = (Call) service.createCall();

       call.setTargetEndpointAddress(new java.net.URL(endpoint));
       call.setOperationName(new QName("ExamService",
         "getAllowAnswerExamPlanCount"));

       call.addParameter("userId", XMLType.XSD_LONG, ParameterMode.IN);
       call.setReturnType(XMLType.XSD_INT);
       Integer result = (Integer) call
         .invoke(new Object[] { new Long(1) });
       System.out.println(result);
      } catch (javax.xml.rpc.ServiceException e) {
       e.printStackTrace();
      } catch (java.net.MalformedURLException e) {
       e.printStackTrace();
      } catch (java.rmi.RemoteException e) {
       e.printStackTrace();
      }
     }
    }

    第五步:get方式訪問測試
     http://localhost:8080/exam/services/ExamService?method=getAllowAnswerExamPlanContainer&paramter0=1&paramter1=1&paramter2=1

       

    posted on 2009-02-24 00:32 強強 閱讀(1082) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 亚洲一线产区二线产区区| 国产亚洲精品AA片在线观看不加载| 亚洲AV色香蕉一区二区| ssswww日本免费网站片| 亚洲国产精品13p| 国产AV无码专区亚洲AV蜜芽| 成人免费视频一区二区三区| 精品国产成人亚洲午夜福利| 性xxxx视频播放免费| 亚洲av午夜电影在线观看 | 亚洲五月综合网色九月色| 永久黄色免费网站| 亚洲乱码卡三乱码新区| 妻子5免费完整高清电视| 亚洲日韩国产二区无码| 国产免费怕怕免费视频观看| 无码 免费 国产在线观看91| 国产亚洲午夜高清国产拍精品| a级黄色毛片免费播放视频| 亚洲国产高清在线| 久久福利资源网站免费看| 亚洲日韩中文字幕一区| 免费看一级做a爰片久久| 国产成人无码精品久久久久免费| 亚洲av无码无在线观看红杏| 亚洲日本在线免费观看| 亚洲av无码专区在线观看下载 | 免费一级做a爰片久久毛片潮| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 一个人看的在线免费视频| 亚洲精品中文字幕乱码三区| 久久久久久精品免费看SSS| 国产成人精品日本亚洲语音| 亚洲精品乱码久久久久久按摩| 久久午夜夜伦鲁鲁片免费无码影视| 亚洲一区二区三区写真| 在线观看亚洲av每日更新| 久久国产免费福利永久| 日韩精品无码免费视频| 亚洲大香人伊一本线| 亚洲欧洲一区二区三区|