转:
http://blog.csdn.net/yuguiyang1990/article/details/9800851
好久没有看CXF了,最近又一次用到,在这里根据日常使用,接着整理。
好吧,先复习一下,怎样使用Maven创建一个CXF的项目。
1.根据之前的博客,新建一个Web项目
2.修改pom.xml
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.ygy.cxf</groupId>
- <artifactId>cxf-date</artifactId>
- <packaging>war</packaging>
- <version>0.0.1-SNAPSHOT</version>
- <name>cxf-date Maven Webapp</name>
- <url>http://maven.apache.org</url>
- <!-- 属性配置 -->
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <cxf.version>2.7.5</cxf.version>
- <spring.version>3.1.1.RELEASE</spring.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.10</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-frontend-jaxws</artifactId>
- <version>${cxf.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-transports-http</artifactId>
- <version>${cxf.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-transports-http-jetty</artifactId>
- <version>${cxf.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-webapp</artifactId>
- <version>8.1.11.v20130520</version>
- </dependency>
- </dependencies>
- <build>
- <finalName>cxf-date</finalName>
- </build>
- </project>
3.修改web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:applicationContext.xml</param-value>
- </context-param>
- <listener>
- <listener-class>
- org.springframework.web.context.ContextLoaderListener
- </listener-class>
- </listener>
- <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>/services/*</url-pattern>
- </servlet-mapping>
- </web-app>
4.写服务接口
- package org.ygy.cxf.entity;
- import java.io.Serializable;
- import java.util.Date;
- public class BookEntity implements Serializable {
- private static final long serialVersionUID = -860948461727285535L;
- private Integer id;
- private String name;
- private String author;
- private Date publicationDate;//出版日期
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getAuthor() {
- return author;
- }
- public void setAuthor(String author) {
- this.author = author;
- }
- public Date getPublicationDate() {
- return publicationDate;
- }
- public void setPublicationDate(Date publicationDate) {
- this.publicationDate = publicationDate;
- }
- }
- package org.ygy.cxf.service;
- import javax.jws.WebParam;
- import javax.jws.WebService;
- import org.ygy.cxf.entity.BookEntity;
- @WebService
- public interface IBookService {
- /**
- * 添加一本书
- * @param book
- */
- public void add(@WebParam(name="book")BookEntity book);
- /**
- * 根据ID,查询书籍
- * @param id
- * @return
- */
- public BookEntity query(@WebParam(name="id")Integer id);
- }
- package org.ygy.cxf.service.impl;
- import java.util.Date;
- import javax.jws.WebService;
- import org.ygy.cxf.entity.BookEntity;
- import org.ygy.cxf.service.IBookService;
- import org.ygy.cxf.util.DateUtil;
- @WebService(endpointInterface="org.ygy.cxf.service.IBookService")
- public class BookService implements IBookService {
- @Override
- public void add(BookEntity book) {
- System.out.println("id->" + book.getId());
- System.out.println("name->" + book.getName());
- System.out.println("author->" + book.getAuthor());
- System.out.println("publicationDate->" + DateUtil.toStr(book.getPublicationDate()));
- }
- @Override
- public BookEntity query(Integer id) {
- BookEntity book = new BookEntity();
- book.setId(1001);
- book.setName("OnePiece");
- book.setAuthor("YGY");
- book.setPublicationDate(new Date());
- return book;
- }
- }
- package org.ygy.cxf.util;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- public class DateUtil {
- private static SimpleDateFormat sdf = null;
- private DateUtil() {
- }
- /**
- * 将日期转换成字符串
- * @param date 日期
- * @return
- */
- public static String toStr(Date date) {
- sdf = new SimpleDateFormat(Configs.COMMON);
- return sdf.format(date);
- }
- }
- package org.ygy.cxf.util;
- public class Configs {
- public static final String COMMON = "yyyy-MM-dd HH:mm:ss";
- }
5.新建Spring配置文件
- <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/schemas/jaxws.xsd">
- <import resource="classpath:META-INF/cxf/cxf.xml" />
- <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
- <jaxws:endpoint
- id="bookService"
- implementor="org.ygy.cxf.service.impl.BookService"
- address="/BookService"
- ></jaxws:endpoint>
- </beans>
6.好了,贴了这么多代码,发布项目测试一下先
7.到这里,都算是复习了,在以前,如果想要根据WSDL生成客户端代码的话,可能要使用命令行wsdl2java命令,还挺长的,
现在,使用了Maven,就简单多了。
修改pom.xml
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.ygy.cxf</groupId>
- <artifactId>cxf-date</artifactId>
- <packaging>war</packaging>
- <version>0.0.1-SNAPSHOT</version>
- <name>cxf-date Maven Webapp</name>
- <url>http://maven.apache.org</url>
- <!-- 属性配置 -->
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <cxf.version>2.7.5</cxf.version>
- <spring.version>3.1.1.RELEASE</spring.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.10</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-frontend-jaxws</artifactId>
- <version>${cxf.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-transports-http</artifactId>
- <version>${cxf.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-transports-http-jetty</artifactId>
- <version>${cxf.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-webapp</artifactId>
- <version>8.1.11.v20130520</version>
- </dependency>
- </dependencies>
- <build>
- <finalName>cxf-date</finalName>
- <plugins>
- <plugin>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-codegen-plugin</artifactId>
- <version>${cxf.version}</version>
- <executions>
- <execution>
- <id>generate-sources</id>
- <phase>generate-sources</phase>
- <configuration>
- <sourceRoot>src/main/resources/cxf</sourceRoot>
- <wsdlOptions>
- <wsdlOption>
- <wsdl>http://localhost:8080/cxf-date/services/BookService?wsdl</wsdl>
- <frontEnd>jaxws21</frontEnd>
- <faultSerialVersionUID>1</faultSerialVersionUID>
- </wsdlOption>
- </wsdlOptions>
- </configuration>
- <goals>
- <goal>wsdl2java</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- </project>
这里,添加了一个插件,通过它,可以根据配置的WSDL地址,将代码生成到指定的文件夹
sourceRoot:就是生成文件存放的位置
wsdl:就是WSDL地址
然后,在pom.xml上右键单击,选择run as 下的mvn generate-sources
然后,刷新一下项目,就会看到生成的代码:
好了,先写到这,主要介绍一下使用Maven根据WSDL自动生成Java代码。