很多web Service的教程里面都有这样的例子的
比如jwsdp的tutorial

解决方案 »

  1.   

    在程序中生成客户端程序就比较困难,这意味这你要生成代码并且编译执行,当然你可以调用工具来完成这些操作。但实际上是没有必要的。在jwsdp教程中给出了如何利用DII来调用WEB服务的过程,可以去参考一下。
      

  2.   

    另外我想请教楼上的高手,这段查找发现服务的代码好像有问题,你帮我看看可以吗?在coffee break 的例子中,RetalPriceList.java/////它并没有找到那个endpoint,付给distributor也是空的。不知道为什么,这样查找怎么会错的??
    String RegistryURL = "http://localhost:8080/RegistryServer";
          String RPCDistributor = "JAXRPCCoffeeDistributor";
          retailPriceItems = new ArrayList();
          distributors = new ArrayList();      JAXRQueryByName jq = new JAXRQueryByName();
          Connection connection =  jq.makeConnection(RegistryURL, RegistryURL);
          Collection orgs = jq.executeQuery(RPCDistributor);
          Iterator orgIter = orgs.iterator();
          // Display organization information
          try {
            while (orgIter.hasNext()) {
              Organization org = (Organization) orgIter.next();
              System.out.println("Org name: " + jq.getName(org));
              System.out.println("Org description: " + jq.getDescription(org));
              System.out.println("Org key id: " + jq.getKey(org));          // Display service and binding information
              Collection services = org.getServices();
              Iterator svcIter = services.iterator();
              while (svcIter.hasNext()) {
                Service svc = (Service) svcIter.next();
                System.out.println(" Service name: " + jq.getName(svc));
                System.out.println(" Service description: " + jq.getDescription(svc));
                Collection serviceBindings = svc.getServiceBindings();
                Iterator sbIter = serviceBindings.iterator();
                while (sbIter.hasNext()) {
                  ServiceBinding sb = (ServiceBinding) sbIter.next();
                  String distributor = sb.getAccessURI();
                  System.out.println("  Binding Description: " + jq.getDescription(sb));
                  System.out.println("  Access URI: " + distributor);              // Get price list from service at distributor URI
                  PriceListBean priceList = PriceFetcher.getPriceList(distributor);
                  Collection priceItems = priceList.getPriceItems();
                  for (Iterator it=priceItems.iterator(); it.hasNext(); ) {
                    PriceItemBean pib = (PriceItemBean)it.next();
                    BigDecimal price = pib.getPricePerPound().multiply(new BigDecimal("1.35")).setScale(2, BigDecimal.ROUND_HALF_UP);
                    RetailPriceItem rpi = new RetailPriceItem(pib.getCoffeeName(), pib.getPricePerPound(), price, distributor);
                    retailPriceItems.add(rpi);
                  }
                  distributors.add(distributor); 
                }
              }
              // Print spacer between organizations
              System.out.println(" --- ");
            } 
          } catch (Exception e) {
            e.printStackTrace();
          } finally  {
            // At end, close connection to registry
            if (connection != null) {
              try {
               connection.close();
              } catch (JAXRException je) {}
            }
          }