WEB开发网
开发学院软件开发Java Java Web 服务: Axis2 中的 JAXB 和 JAX-WS 阅读

Java Web 服务: Axis2 中的 JAXB 和 JAX-WS

 2009-11-05 00:00:00 来源:WEB开发网   
核心提示: WsImport 工具将附带的 WSDL 识别为匹配 “封装的” 约定,并自动生成一个未封装的服务接口,Java Web 服务: Axis2 中的 JAXB 和 JAX-WS(10),您可以从 清单 5 中看到效果,在此过程中,如果将其与 清单 2 比较,您将观察到未封装

WsImport 工具将附带的 WSDL 识别为匹配 “封装的” 约定,并自动生成一个未封装的服务接口。您可以从 清单 5 中看到效果,在此过程中,方法将单独的值作为输入参数,并直接返回任何合适的类型,而不是使用一个封装器对象层(但是仍然将生成封装器对象,然后供 JAX-WS 运行时在幕后使用)。

附带的代码再一次给出了服务和测试客户机的实际实现。要亲自尝试,您需要对附带的 build.properties 文件进行编辑,以设置到 Axis2 安装和 JAX-WS 参考实现安装的路径。完成编辑后,在打开到 jaxws 目录的控制台中输入 ant 以从 WSDL 运行 JAX-WS 代码生成,编译附带的代码,并为服务器部署构建一个 JAR 文件。要运行测试客户机,将生成的 JAR 文件复制到 Axis2 服务器安装的 WEB-INF/servicejars 目录中,然后在控制台中输入 ant run。

客户端 JAX-WS 使用

清单 6 展示了完整的测试客户机代码。如果将其与 清单 2 比较,您将观察到未封装接口和已封装接口之间的不同,其中未封装接口具有更好的编程友好性。


清单 6. JAX-WS 测试客户机代码
public class WebServiceClient 
{ 
  public static void main(String[] args) throws Exception { 
     
    // check for required command line parameters 
    if (args.length < 3) { 
      System.out.println("Usage:\n java " + 
        "com.sosnoski.ws.library.jaxws.WebServiceClient host port path"); 
      System.exit(1); 
    } 
     
    // create the client stub 
    JaxwsLibrary service = new JaxwsLibrary(); 
    Library stub = service.getLibrary(); 
     
    // set the actual endpoint address 
    String target = "http://" + args[0] + ":" + args[1] + args[2]; 
    System.out.println("Connecting to " + target); 
    BindingProvider provider = (BindingProvider)stub; 
    provider.getRequestContext(). 
      put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, target); 
     
    // retrieve a book directly 
    String isbn = "0061020052"; 
    BookInformation book = stub.getBook(isbn); 
    if (book == null) { 
      System.out.println("No book found with ISBN '" + isbn + '\''); 
    } else { 
      System.out.println("Retrieved '" + book.getTitle() + '\''); 
    } 
     
    // retrieve the list of types defined 
    List<TypeInformation> types = stub.getTypes(); 
    System.out.println("Retrieved " + types.size() + " types:"); 
    for (int i = 0; i < types.size(); i++) { 
      TypeInformation type = types.get(i); 
      System.out.println(" '" + type.getName() + "' with " + 
        type.getCount() + " books"); 
    } 
     
    // add a new book 
    String title = "The Dragon Never Sleeps"; 
    isbn = "0445203498"; 
    try { 
      List<String> authors = new ArrayList<String>(); 
      authors.add("Cook, Glen"); 
      stub.addBook("scifi", isbn, authors, title); 
      System.out.println("Added '" + title + '\''); 
      title = "This Should Not Work"; 
      stub.addBook("scifi", isbn, authors, title); 
      System.out.println("Added duplicate book - should not happen!"); 
    } catch (AddDuplicateFault e) { 
      System.out.println("Failed adding '" + title + 
        "' with ISBN '" + isbn + "' - matches existing title '" + 
        e.getFaultInfo().getBook().getTitle() + '\''); 
    } 
     
    // get all books of a type 
    List<BookInformation> books = stub.getBooksByType("scifi"); 
    System.out.println("Retrieved " + books.size() + " books of type 'scifi':"); 
    for (int i = 0; i < books.size(); i++) { 
      System.out.println(" '" + books.get(i).getTitle() + '\''); 
    } 
  } 
}

上一页  5 6 7 8 9 10 

Tags:Java Web 服务

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接