Terry.Li-彬

          虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks
          <2007年11月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          常用鏈接

          留言簿(19)

          隨筆分類(107)

          隨筆檔案(141)

          文章分類(284)

          文章檔案(342)

          相冊

          收藏夾(58)

          家裝

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          一、對象參數的傳遞

          首先是我們要傳輸的變量對象Order,代碼如下:

          package samples.userguide.example5;
          public class Order
          {
              private String customerName;

              private String shippingAddress;
              
              public String getCustomerName()
              { return customerName; }
              public void setCustomerName(String name)
              { customerName = name; }
          }

          要發布的services的代碼如下:

          package samples.userguide.example5;

          public class BeanService
          {
              public Order getNewOrder(Order order)
              {
                  order.setCustomerName("liuyujun");
                  return order;
              }

          }

          然后我們只要在配置文件server-config.wsdd里加入下面這段就可以發布了

          <service name="OrderProcessor" provider="java:RPC">
                  <parameter name="className" value="samples.userguide.example5.BeanService"/>
                  <parameter name="allowedMethods" value="*"/>
                  <beanMapping qname="myNS:Order" xmlns:myNS="urn:BeanService" languageSpecificType="java:samples.userguide.example5.Order"/>
              </service>

          特別要注意多了beanMapping這部分,qname指明我們用自己命名空間里的哪個對象,xmlns:myNS則指明了我們的命名空間,后面還一個指明了用到的對象類。

          客戶端調用程序:

          package samples.userguide.example5;

          public class Client
          {

              private final static String targetEndpointAddress = "http://localhost:8080/axis/services/OrderProcessor";
              private final static QName    qn      = new QName( "urn:BeanService", "Order" );


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

          //創建一個參數對象
                  Order order = new Order();
                  order.setCustomerName("Glen Daniels");


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

          //注冊對象類型
                  call.registerTypeMapping(Order.class, qn,
                                           new org.apache.axis.encoding.ser.
                                           BeanSerializerFactory(Order.class, qn),
                                           new org.apache.axis.encoding.ser.
                                           BeanDeserializerFactory(Order.class, qn));
                  call.setTargetEndpointAddress(new java.net.URL(targetEndpointAddress));


                  call.setOperationName(new QName("OrderProcessor", "getNewOrder"));
                      call.addParameter("order", qn, ParameterMode.IN);
                      call.setReturnType(qn, Order.class);
                   Order   newOrder = (Order) call.invoke(new Object[] {order});
                  System.out.println("new custname:"+newOrder.getCustomerName());
              }
          }
          這樣就能看到返回的效果了;

           二、獲得訪問者信息

          MessageContext context = MessageContext.getCurrentContext();
                  HttpServletRequest req = (HttpServletRequest) context.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);

          這樣就可以得到ruquest對象獲得相關信息了,當然request的有些功能是用不了的,比如,getSession就是無效的


          posted on 2007-11-24 14:46 禮物 閱讀(597) 評論(0)  編輯  收藏 所屬分類: webservice
          主站蜘蛛池模板: 吉木乃县| 云南省| 扶风县| 宁城县| 临夏县| 互助| 临沭县| 南华县| 襄汾县| 溧阳市| 封开县| 甘泉县| 凤冈县| 华阴市| 会东县| 梁河县| 邵东县| 三明市| 安新县| 军事| 和田县| 思茅市| 海阳市| 台南县| 香格里拉县| 社会| 宝丰县| 寿阳县| 蒙山县| 西丰县| 清新县| 杭锦后旗| 监利县| 敦煌市| 闵行区| 永仁县| 错那县| 辛集市| 定襄县| 湖口县| 浮梁县|