CXF是一个开源的,为JAX-WS和JAX-RS平台提供的Java web服务框架。它可以实现SOAP(Simple Object Access Protocol)和REST(Representational State Transfer)协议,并具有较好的跨平台性和语言互操作性。
在本篇文章中,我们将探讨如何使用CXF框架实现客户端远程访问服务器。
1. 配置CXF客户端
使用CXF框架实现客户端远程访问服务器的之一步是配置CXF客户端,以确保客户端可以正确地连接到服务器。
CXF客户端可以通过以下几种方式进行配置:
1.1 基于Spring配置
在Spring配置文件中,可以通过配置CXF客户端来实现对服务端的远程访问。
具体配置方法如下:
在Spring配置文件中,添加cxf.xml文件,如下所示:
“`
class=”org.apache.cxf.jaxws.JaxWsProxyFactoryBean”>
“`
以上配置中,使用了JaxWsProxyFactoryBean类,这个类是CXF提供的类,用来创建和管理代理接口。要使用它,需要将服务器地址和服务端口指定为服务地址。
1.2 基于代码配置
除了基于Spring配置之外,还可以通过代码进行配置。
具体配置方法如下:
在客户端代码中,创建服务工厂,如下所示:
“`
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
“`
然后,设置服务工厂的属性,如下所示:
“`
factory.setServiceClass(HelloWorldService.class);
factory.setAddress(“http://localhost:8080/HelloWorldService/HelloWorld”);
“`
其中,HelloWorldService.class是服务端的接口类,必须与服务端的接口类一致,地址是服务端的地址。
使用服务工厂创建代理接口,如下所示:
“`
HelloWorldService client = (HelloWorldService) factory.create();
“`
1.3 基于cxf.xml配置
CXF提供了一个cxf.xml文件,用于创建CXF客户端和服务端的代理类。
具体配置方法如下:
在cxf.xml文件中,添加以下代码:
“`
serviceClass=”com.test.service.HelloWorldService”
address=”http://localhost:8080/HelloWorldService/HelloWorld” />
“`
其中,id是客户端的唯一标识符,serviceClass是服务端的接口类,address是服务端的地址。
然后,在客户端代码中,通过ApplicationContext对象获取客户端代理类,如下所示:
“`
ApplicationContext context = new ClassPathXmlApplicationContext(“classpath:cxf.xml”);
HelloWorldService client = (HelloWorldService) context.getBean(“helloWorldClient”);
“`
2. 使用CXF客户端访问服务器
完成CXF客户端的配置后,可以使用客户端代理类访问服务器。
具体步骤如下:
通过调用代理接口的方法,访问服务器上的方法,如下所示:
“`
String result = client.sayHello(“World”);
“`
其中,sayHello是服务端接口中的方法名,”World”是需要传递给服务器端方法的参数。
然后,使用返回的结果result进行相应操作,如下所示:
“`
System.out.println(result);
“`
此时,客户端就可以使用CXF框架远程访问服务器端的方法,并获取服务器端返回的结果。
3.
本文介绍了如何使用CXF框架实现客户端远程访问服务器。
需要配置CXF客户端,以确保客户端可以正确地连接到服务器。可以通过基于Spring配置、基于代码配置或者基于cxf.xml配置的方式进行配置。
然后,就可以使用CXF客户端访问服务器上的方法,并获取服务器端返回的结果。
CXF框架通过实现SOAP和REST协议,提供了较好的跨平台性和语言互操作性。它的应用范围较广,可以被广泛应用于Web服务开发中。
相关问题拓展阅读:
- 如何让cxf客户端简单支持ssl
- 客户端如何连接服务器
如何让cxf客户端简单支持ssl
你好,使用方法如下:
web service在企业应用中常常被用作不同系统之间的接口方式。但是如果没有任何安全机制的话,显然是难以委以重任的。比较直接的web service加密方式就是使用HTTPS方式(SSL证书加密)加密连接,并且只允许持有信任证书的客户端连接,即SSL双向认证。这样就保证了连接来源的可信度以及数据在传输过程中没有被窃取或篡改没隐。通过HTTPS加密方式访问web service具体方法如下:
【准备工作】
(1)检查JDK的环境变量是否正确。本文使用JDK 1.6
(2)准备web服务器,这里选用TOMCAT 6.0
(3)准备web service服务端和客户端。
【生成证书】
这里用到的文件,这里存放在D:/SSL/文件夹内,其中D:/SSL/server/内的文件是要交给服务器用的,D:/SSL/client/内的文件是要交给客户端用的。
1生成服务端证书
开始-运行-CMD-在dos窗口执行下执行命令:
keytool -genkey -v -aliastomcat -keyalg RSA -keystore D:/SSL/server/tomcat.keystore -dname”CN=127.0.0.1,OU=zlj,O=zlj,L=Peking,ST=Peking,C=CN” -validity 3650-storepass zljzlj -keypass zljzlj
说明:
keytool 是JDK提供的证书生成工具,所有参数的用法参见keytool –help
-genkey 创建新证书
-v 详细信息
-alias tomcat 以地tomcat地作为该证书的别名。这里可以根据需要修改
-keyalg RSA 指定算法
-keystoreD:/SSL/server/tomcat.keystore 保存路径及文件名
-dname”CN=127.0.0.1,OU=zlj,O=zlj,L=Peking,ST=Peking,C=CN” 证书发行者身份,这里的CN要与发布后的访问域名一致。但由于这里是自签证书,如果在浏览器访问,仍然会有警告提示。真正场景中建议申请CA机构(wosign)签发的SSL证书更历租安全肢察兆。
-validity 3650证书有效期,单位为天
-storepass zljzlj 证书的存取密码
-keypass zljzlj 证书的私钥
2 生成客户端证书
执行命令:
keytool ‐genkey ‐v ‐aliasclient ‐keyalg RSA ‐storetype PKCS12 ‐keystore D:/SSL/client/client.p12 ‐dname”CN=client,OU=zlj,O=zlj,L=bj,ST=bj,C=CN” ‐validity 3650 ‐storepassclient ‐keypass client
说明:
参数说明同上。这里的-dname 证书发行者身份可以和前面不同,到目前为止,这2个证书可以没有任何关系。下面要做的工作才是建立2者之间的信任关系。
3 导出客户端证书
执行命令:
keytool ‐export ‐aliasclient ‐keystore D:/SSL/client/client.p12 ‐storetype PKCS12 ‐storepass client‐rfc ‐file D:/SSL/client/client.cer
说明:
-export 执行导出
-file 导出文件的文件路径
4 把客户端证书加入服务端证书信任列表
执行命令:
keytool ‐import ‐aliasclient ‐v ‐file D:/SSL/client/client.cer ‐keystoreD:/SSL/server/tomcat.keystore ‐storepass zljzl
说明:
参数说明同前。这里提供的密码是服务端证书的存取密码。
5 导出服务端证书
执行命令:
keytool -export -aliastomcat -keystore D:/SSL/server/tomcat.keystore -storepass zljzlj -rfc -fileD:/SSL/server/tomcat.cer
说明:
把服务端证书导出。这里提供的密码也是服务端证书的密码。
6 生成客户端信任列表
执行命令:
keytool -import -fileD:/SSL/server/tomcat.cer -storepass zljzlj -keystoreD:/SSL/client/client.truststore -alias tomcat –noprompt
说明:
让客户端信任服务端证书
【 配置服务端为只允许HTTPS连接】
1 配置Tomcat 目录下的/conf/server.xml
Xml代码:
说明:
在server.xml里面这段内容本来是被注释掉的,如果想使用https的默认端口443,请修改这里的port参数。其中的clientAuth=”true” 指定了双向证书认证。
2 配置服务端项目web.xml
在之后增加Xml代码:
SSL
/service/*/*–>
SSL required
CONFIDENTIAL
说明:
这里限制了WEB service服务地址的访问必须为https连接。要根据你的web service服务地址配置。
【修改客户端代码】
在执行访问之前,增加Java代码:
System.setProperty(“javax.net.ssl.trustStore”,”D:/SSL/client/client.truststore”);
System.setProperty(“javax.net.ssl.trustStorePassword”,”zljzlj”);
System.setProperty(“javax.net.ssl.keyStoreType”,”PKCS12″);
System.setProperty(“javax.net.ssl.keyStore”,”D:/SSL/client/client.p12″);
System.setProperty(“javax.net.ssl.keyStorePassword”,”client”);
StringendPoint=””;
…
通过设置参数来指定客户端连接时所使用的客户端证书,这里还可以采用修改JVM启动参数的的方式来执行,但出于不影响其他功能的考虑,这里采用System.setProperty的方式来设置这些参数,在使用结束后,可以还原这些参数配置。做为客户端的开发者,可以把拿到的证书文件后,只执行步骤3。
客户端如何连接服务器
客户端通过终端(终端有下腊链载的软件,神谨包括浏览器也属于终端),通过一个端口,连接到轮瞎孙服务器指定的端口。服务器会监听这个端口,如何有这个端口的应用访问,则和终端用户交互,从而达到客户端连接服务器的作用。
客户端通过端口发起网络访问,进行数据交互
通过权限网络连接
cxf 客户端访问服务器的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于cxf 客户端访问服务器,如何使用CXF实现客户端远程访问服务器?,如何让cxf客户端简单支持ssl,客户端如何连接服务器的信息别忘了在本站进行查找喔。