如何使用CXF将 wsdl 文件变成java文件

如何使用CXF将 wsdl 文件变成java文件,第1张

用myeclipse将wsdl文件生成java代码:

1、选择新建的工程后,点击右键,选择“Run As”->“Run”,如下图所示:

2、d出如下窗口:

3、 在上图中,左边选择“Java Application”后,点击左上角的新增“”按钮new configuration,页面如下图所示:

4、在上图中,将“Include libraries when searching for a main class” 勾上,而后点击“Main class”右边的“Search”按钮,d出窗口如下图所示:

5、在上图中输入WSDL2Java后,查找到axis这个jar包中对应类,点击“OK”按钮,此时主窗口如下图所示:

6、在上图中点击“Arguments”页签,Arguments里把要生成的web service URI或wsdl文件写进去,最后点run。在下图中输入的是wsdl文件的路径: src/wsdl/acd_accessCode_interface.wsdl、src/wsdl/acd_accessCode_service.wsdl:

7、生成的java代码如下:

web.xml

说明: 这里主要配置了 spring 的配置文件地址, spring 监听器、 CXF 核心控制器。

applicationContext.xml

说明:

在 spring 的配置文件中使用 jaxws:endpoint 元素来暴露 WebService ,这里有两种方式:

然后我们就可以将工程部署到 tomcat 中,在浏览器中使用

地址 http://localhost:8080/cxf_spring/myService 访问我们的 WebService 工程。

MyClient.java

注意: myService 指定我们的服务名字(在 web.xml 中配置),而 fkjava 指定服务提供者的地址(在 applicationContext.xml 中配置)。同时这种集成不好,因为将地址写死了,没有使用 spring 的注入方式。

我们看 HelloWorldWs.java 这个服务类:

可以看到其中的实际业务处理类还是使用的手工方法进行实例化,没有使用 spring 的注入方式。

在 spring 的配置文件中改变暴露 WebService 的方式:

说明: 加 # 号是为了让服务器知道这个名字不是一个类 ,而只是一个 id 。

然后改造 HelloWorldWs.java 服务类:

然后我们再次使用之前的地址进行访问,发现效果还是一样的。

在上面配置的基础上进行添加,在 applicationContext.xml 中:

此时,和以前一样我们需要在客户端(工程 Call_CXFSpring )那边加上拦截器,添加上用户名和密码的头,然后对服务器进行访问。以此来进行验证。客户端中我们运行类:

MyClient.java

访问服务端。

传统的 SSH 项目中,一般在本地是有相关的数据的,但是有一种场景是我们需要调用别人的数据,但是别人的数据不可能让我们进行修改等 *** 作,那么别人只会暴露一个 WebService ,而我们就需要去调用别人的 WebService 服务器。我们在访问别人时,只能得到 WSDL 文档。此时我们的项目中就不需要业务逻辑组件了,直接去调用别人的 WebService 的一个代理即可。

首先我们拷贝上面的工程,改名为 cxf_springClient ,然后需要增加 struts2 的相关 jar 包:

将原有的一些包删掉,留下权限包 org.fkjava.cxf.ws.auth 。然后我们启动工程 Auth_Server 提供远程服务。在 web 工程中生成相应的包及程序。

web.xml

说明: 这里我们不再需要 CXF 的 servlet 了,因为不需要业务类了,我们直接调用远程业务即可。同时配置 struts2 的核心控制器。

applicationContext.xml

说明: 这里我们同样不需要业务类了,但是需要配置远程业务代理类( serviceClass )。同时注意:不要将端口设置为8080,会冲突。可以看到我们使用 serviceClass 将接口配置进去,而这里的 id 不能随便写,要和 action 中定义的接口名一致。由于远程服务器设置了权限拦截,所以这里使用过滤器将用户名和密码设置到 wsdl 文档的头中。然后在这个类中我们需要使用 execute 方法去获取相应的数据。

struts.xml

ListCatsAction .java

说明: 此时我们就可以使用地址 http://localhost:8080/cxf_springClient/listCats 进行访问了,当然会报找不到 jsp 的错误。

content/listCats.jsp

说明: 此时访问就可以看到

这个问题用crond做不了,因为他的检测间隔就是一分钟,你如果想在两次cron执行的间隔中,log文件的大小达到或超过指定大小就自动转的话,就需要自己写一个脚本,使用sleep这个程序,让她在指定的时间内执行,你可以指定为1秒执行一次logrotate


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8111143.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存