Terry.Li-彬

          虛其心,可解天下之問;專其心,可治天下之學(xué);靜其心,可悟天下之理;恒其心,可成天下之業(yè)。

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            143 隨筆 :: 344 文章 :: 130 評(píng)論 :: 0 Trackbacks

          一、對(duì)象參數(shù)的傳遞

          首先是我們要傳輸?shù)淖兞繉?duì)象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; }
          }

          要發(fā)布的services的代碼如下:

          package samples.userguide.example5;

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

          }

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

          <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指明我們用自己命名空間里的哪個(gè)對(duì)象,xmlns:myNS則指明了我們的命名空間,后面還一個(gè)指明了用到的對(duì)象類。

          客戶端調(diào)用程序:

          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
              {

          //創(chuàng)建一個(gè)參數(shù)對(duì)象
                  Order order = new Order();
                  order.setCustomerName("Glen Daniels");


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

          //注冊(cè)對(duì)象類型
                  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對(duì)象獲得相關(guān)信息了,當(dāng)然request的有些功能是用不了的,比如,getSession就是無效的


          posted on 2007-11-24 14:46 禮物 閱讀(596) 評(píng)論(0)  編輯  收藏 所屬分類: webservice
          主站蜘蛛池模板: 丹寨县| 上犹县| 云梦县| 怀远县| 景泰县| 赫章县| 潜山县| 兴国县| 龙海市| 清水河县| 柘荣县| 闽侯县| 连平县| 江安县| 丰城市| 浦江县| 邯郸县| 乃东县| 福鼎市| 策勒县| 荔浦县| 万荣县| 青海省| 英超| 长沙市| 澎湖县| 绥棱县| 河北区| 台山市| 永靖县| 体育| 密山市| 分宜县| 钦州市| 定日县| 淳化县| 凤翔县| 潞西市| 通江县| 南召县| 鹤山市|