Java Web 服务: CXF 简介
2010-03-31 00:00:00 来源:WEB开发网客户端的使用
与在 Axis2 或 Metro 中使用 JAX-WS 相比,在 CXF 中,示例应用程序的客户端代码是相同的,甚至构建步骤也是类似的:只需代替 JAX-WS 参考实现 wsimport 工具使用 CXF wsdl2java 工具即可。参阅 “Axis2 中的 JAXB 和 JAX-WS” 了解代码和处理的详细信息。
尽管客户端代码相同,不过 CXF 中的客户端行为仍然有一个显著差异。默认情况下,CXF 打印大量令人不悦的日志细节并输出到控制台。CXF 使用 Java 日志记录,因此为避免此输出,您需要设置一个系统属性使其指向一个日志属性文件,设置为仅在有 WARNING 或 SEVERE 信息时输出日志。示例应用程序所用的 Ant build.xml 使用 JVM 参数行 <jvmarg value="-Djava.util.logging.config.file=${build-dir}/logging.properties"/> 完成这个设置。
服务器端的使用
与在 Axis2 或 Metro 中使用 JAX-WS 相比,在 CXF 中,示例应用程序的客户端代码也是一样的,且构建步骤与 Metro 很相似。使用 Axis2 时,是通过创建一个包含服务和数据模型类的 JAR 文件来准备用于部署的服务,然后通过将该 JAR 拖放到 Axis2 服务器安装目录中的 WEB-INF/servicejars 目录中来部署服务。而当使用 Metro 和 CXF 时,则需要创建一个包含服务和数据模型类、Metro 或 CXF 库 JARs 以及一对配置文件(其中一个文件在这两个堆栈中名称不同)的 WAR 文件。WEB-INF/web.xml 文件配置真正的 servlet 处理。用于示例应用程序的版本如 清单 1 所示:
清单 1. 示例应用程序 web.xml
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee">
<display-name>CXFLibrary</display-name>
<description>CXF Library Service</description>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:META-INF/cxf/cxf.xml
classpath:META-INF/cxf/cxf-extension-soap.xml
classpath:META-INF/cxf/cxf-servlet.xml
</param-value>
</context-param>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
更多精彩
赞助商链接