方法一:使用jws的高层封装,如:
package cxf.test;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import javax.xml.ws.soap.SOAPBinding;
import cxf.test.HelloWorld; // necessary
public final class Client {
private static final QName SERVICE_NAME
= new QName("http://test.cxf/", "HelloWorld"); // 首参为接口实现类包名的反缀
private static final QName PORT_NAME
= new QName("http://test.cxf/", "HelloWorldPort");
private Client() { }
public static void main(String args[]) throws Exception {
Service service = Service.create(SERVICE_NAME);
// Endpoint Address
String endpointAddress = "http://localhost:8080/CXFTomcat/services/HelloWorld";
// Add a port to the Service
service.addPort(PORT_NAME, SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);
HelloWorld hw = service.getPort(HelloWorld.class);
System.out.println(hw.say("World"));
}
}
方法二:使用较下层的代码更加精确的控制程序的行为,如:
package cxf.test;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import cxf.test.HelloWorld; // necessary
public final class Client {
private Client() { }
public static void main(String args[]) throws Exception {
JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();
factoryBean.getInInterceptors().add(new LoggingInInterceptor());(可选)
factoryBean.getOutInterceptors().add(new LoggingOutInterceptor());(可选)
factoryBean.setServiceClass(cxf.test.HelloWorld.class);
factoryBean.setAddress("http://localhost:8080/CXFTomcat/services/HelloWorld");
HelloWorld client = (HelloWorld)factoryBean.create();
System.out.println(client.say("God"));
System.exit(0);
}
}
备注:LoggingInInterceptor和LoggingOutInterceptor是日志拦截器,用于输入和输出时显示日志。使用与否并不影响程序的行为。
方法三:使用Spring,例如:
package cxf.test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cxf.test.HelloWorld; // necessary
public final class Client {
private Client() { }
public static void main(String args[]) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"cxf/test/client-beans.xml"});
HelloWorld client = (HelloWorld)context.getBean("client");
String response = client.say("Joe");
System.out.println("Response: " + response);
System.exit(0);
}
}
注意:要想使用Spring来完成,在cxf.test包中必须有client-beans.xml存在,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd">
<bean id="client" class="cxf.test.HelloWorld"
factory-bean="clientFactory" factory-method="create"/>
<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="cxf.test.HelloWorld"/>
<property name="address" value="http://localhost:8080/CXFTomcat/services/HelloWorld"/>
</bean>
</beans>
4.执行
Run As Java Application
分享到:
相关推荐
今天就乱弹一番,如何使用动态编译动态生成WS服务调用的代理类,然后通过这个代理类调用WS服务。 首先,动态编译这玩意在.NET里面是非常简单的,实际上只涉及到两个类型:CodeDomProvider以及CompilerParameters...
异构系统WS调用异构系统WS调用异构系统WS调用异构系统WS调用
公司代码实现,简单的webservice服务 发布,实现客户端的调用。
rar中包含整个项目的源码和数据库生成脚本,采用jax-ws发布Web Service服务,支持java客户端和.Net客户端调用,数据库采用oracle10g,里面有创建数据库脚本文件createTable_Oracle10g.sql,由于Hibernate映射表中会...
纯java调用ws-security+CXF实现的webservice安全接口
spring-ws开发/调用webservice示例代码,包括xsd/wsdl,
vc++6.0 LoadLibrary方式调用HeapDLL.dll,测试HeapDLL.dll 的对外接口(含int传参、结构体传参、堆内存分配与释放)。 三、VbCallVcDll vb6.0 调用HeapDLL.dll,测试HeapDLL.dll 的对外接口(含int传参、结构体传参、...
JAX_WS调用webservice,初用着可以花十分钟时间,按文档写个例子!很详细,看了就明白!
基于Cache的BPEL4WS引擎的Web服务异步调用机制,李玲勇,郑智刚,本文讨论了BPEL4WS执行引擎WebFlow对Web服务的异步调用机制,在引擎的服务调用代理中将对Web服务的调用统一采用非阻塞双传输异步调用,�
对Webservice的调用. 微软自带的Webservice的访问方法调用. 手写的Webservice方法调用
DELPHI 7 调用 JAVA 接口 ,传入 JAVA接口地址,和参数 返回结果
基于jax-ws 实现的web service client和server端的demo程序。 注:如果使用的是 myeclipse 时 server 部署到tomcat 启动的时候会报错 解决办法:找到myeclipse安装目录下的 plugins 目录里 查找 webservices-rt.jar,...
主要针对JDK1.6自带的web service提供简单的例子,主要提供调用前的权限校验,根据用户名和密码来看调用者是否有调用权限。
vs2005控制台程序给予gsoap访问myeclipse8.x给予jax-ws的web service服务 在我的博客中,有详细的步骤描述
asp.net下开发的web服务。用java语言进行调用。
在windows系统中,不管用什么网络库,最终都会调用到ws2_32库来发送与接收网络数据。winhttp,wininet也不例外,都是内部加工好HTTP头,一样还是调用的ws2_32 的API来实现数据传送。资源作者:。资源下载:。
调试环境:mycelipse10+tomcat7 包含调用简单数据类型,List类型,下载javabean对象,上传图像文件,上传javabean复杂数据对象等5个代码例子。 调试环境的配置,网上很多文章都写了。
骆驼泉-WS 通过网络服务调用路由器2014-12-20 15:27:40,016 | 警告 | qtp1430212144-70 | PhaseInterceptorChain | ? ? | 176 - org.apache.cxf.cxf-api - 2.7.0.redhat-610379 | 应用程序 { 已经抛出异常,现在展开...
C写的程序使用网络功能的库 ws2_32的动态库,可以支持32位和64位 编译时需要加上 #pragma comment(lib,"ws2_32.lib")