CXF应用程序开发 WS 多个服务动态访问

官方网站:

 

https://cwiki.apache.org/CXF20DOC/dynamic-clients.html

    通常的方法来构建一个Web服务客户端,包括为服务(SEI)的,以及任何可用于输入和输出的客户端应用程序使用的类Java接口。这并不总是理想的或实际。

     CXF的支持多种办法,以允许应用程序进行通信,而无需SEI和数据类服务。 JAX - WS的指定的JAX - WS的Diapatch API,以及作为读取和编写XML提供程序接口。这页,但是,描述了CXF的动态客户设施。有了动态的客户,在运行时产生CXF的SEI和bean类,并允许您调用的API,通过采取对象,或通过使用反射来调用充分代理业务。

请注意,在一般情况下,CXF的只支持节水灌溉- BP的服务。如果您尝试创建一个WSDL使用功能之外的节水灌溉- BP公司一个动态的客户端,CXF的可能抛出一个异常。

CXF提供了两种工厂的用于访问动态类。DynamicClientFactory and JaxWsDynamicClientFactory,如果的服务采用JAX-WS策略,你可以使用JaxWsDynamicClientFactory。如果你不想或者不需要JAX-WS,可以使用DynamicClientFactory 。

JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient("echo.wsdl");

Object[] res = client.invoke("echo", "test echo");
System.out.println("Echo response: " + res[0]);

 

      Many WSDLs will have more complex types though. In this case the JaxWsDynamicClientFactory takes care of generating Java classes for these types. For example, we may have a People service which keeps track of people in an organization. In the sample below we create a Person object that was generated for us dynamically and send it to the server using the addPerson operation:

JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient("people.wsdl", classLoader);


Object person = Thread.currentThread().getContextClassLoader().loadClass("com.acme.Person").newInstance();

Method m = person.getClass().getMethod("setName", String.class);
m.invoke(person, "Joe Schmoe");

client.invoke("addPerson", person);
 
 

你可能感兴趣的:(apache,Web,bean,xml,osgi)