CXF学习之旅(三) - 使用Maven根据WSDL生成生成Java代码

转:

http://blog.youkuaiyun.com/yuguiyang1990/article/details/9800851

好久没有看CXF了,最近又一次用到,在这里根据日常使用,接着整理。

好吧,先复习一下,怎样使用Maven创建一个CXF的项目。

1.根据之前的博客,新建一个Web项目

2.修改pom.xml

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  3.   <modelVersion>4.0.0</modelVersion>  
  4.   <groupId>org.ygy.cxf</groupId>  
  5.   <artifactId>cxf-date</artifactId>  
  6.   <packaging>war</packaging>  
  7.   <version>0.0.1-SNAPSHOT</version>  
  8.   <name>cxf-date Maven Webapp</name>  
  9.   <url>http://maven.apache.org</url>  
  10.     
  11.   <!-- 属性配置 -->  
  12.     <properties>  
  13.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  14.         <cxf.version>2.7.5</cxf.version>  
  15.         <spring.version>3.1.1.RELEASE</spring.version>  
  16.     </properties>  
  17.   
  18.     <dependencies>  
  19.         <dependency>  
  20.             <groupId>junit</groupId>  
  21.             <artifactId>junit</artifactId>  
  22.             <version>4.10</version>  
  23.             <scope>test</scope>  
  24.         </dependency>  
  25.   
  26.           
  27.         <dependency>  
  28.             <groupId>org.apache.cxf</groupId>  
  29.             <artifactId>cxf-rt-frontend-jaxws</artifactId>  
  30.             <version>${cxf.version}</version>  
  31.         </dependency>  
  32.   
  33.         <dependency>  
  34.             <groupId>org.apache.cxf</groupId>  
  35.             <artifactId>cxf-rt-transports-http</artifactId>  
  36.             <version>${cxf.version}</version>  
  37.         </dependency>  
  38.   
  39.         <dependency>  
  40.             <groupId>org.apache.cxf</groupId>  
  41.             <artifactId>cxf-rt-transports-http-jetty</artifactId>  
  42.             <version>${cxf.version}</version>  
  43.         </dependency>  
  44.   
  45.         <dependency>  
  46.             <groupId>org.springframework</groupId>  
  47.             <artifactId>spring-context</artifactId>  
  48.             <version>${spring.version}</version>  
  49.         </dependency>  
  50.   
  51.         <dependency>  
  52.             <groupId>org.springframework</groupId>  
  53.             <artifactId>spring-web</artifactId>  
  54.             <version>${spring.version}</version>  
  55.         </dependency>  
  56.   
  57.         <dependency>  
  58.             <groupId>org.eclipse.jetty</groupId>  
  59.             <artifactId>jetty-webapp</artifactId>  
  60.             <version>8.1.11.v20130520</version>  
  61.         </dependency>  
  62.   
  63.     </dependencies>  
  64.   
  65.     <build>  
  66.         <finalName>cxf-date</finalName>  
  67.     </build>  
  68. </project>  
<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

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.          http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  6.            
  7.     <context-param>  
  8.         <param-name>contextConfigLocation</param-name>  
  9.         <param-value>classpath:applicationContext.xml</param-value>  
  10.     </context-param>  
  11.   
  12.    <listener>  
  13.       <listener-class>  
  14.          org.springframework.web.context.ContextLoaderListener  
  15.       </listener-class>  
  16.    </listener>  
  17.      
  18.      
  19.    <servlet>    
  20.         <servlet-name>CXFServlet</servlet-name>    
  21.             <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>    
  22.         <load-on-startup>1</load-on-startup>    
  23.     </servlet>    
  24.     <servlet-mapping>    
  25.         <servlet-name>CXFServlet</servlet-name>    
  26.         <url-pattern>/services/*</url-pattern>    
  27.     </servlet-mapping>    
  28.      
  29.   
  30. </web-app>  
<?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.写服务接口

  1. package org.ygy.cxf.entity;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.Date;  
  5.   
  6. public class BookEntity implements Serializable {  
  7.     private static final long serialVersionUID = -860948461727285535L;  
  8.   
  9.     private Integer id;  
  10.     private String name;  
  11.     private String author;  
  12.     private Date publicationDate;//出版日期  
  13.   
  14.     public Integer getId() {  
  15.         return id;  
  16.     }  
  17.   
  18.     public void setId(Integer id) {  
  19.         this.id = id;  
  20.     }  
  21.   
  22.     public String getName() {  
  23.         return name;  
  24.     }  
  25.   
  26.     public void setName(String name) {  
  27.         this.name = name;  
  28.     }  
  29.   
  30.     public String getAuthor() {  
  31.         return author;  
  32.     }  
  33.   
  34.     public void setAuthor(String author) {  
  35.         this.author = author;  
  36.     }  
  37.   
  38.     public Date getPublicationDate() {  
  39.         return publicationDate;  
  40.     }  
  41.   
  42.     public void setPublicationDate(Date publicationDate) {  
  43.         this.publicationDate = publicationDate;  
  44.     }  
  45.   
  46. }  
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;
	}

}


 

  1. package org.ygy.cxf.service;  
  2.   
  3. import javax.jws.WebParam;  
  4. import javax.jws.WebService;  
  5.   
  6. import org.ygy.cxf.entity.BookEntity;  
  7.   
  8. @WebService  
  9. public interface IBookService {  
  10.     /** 
  11.      * 添加一本书 
  12.      * @param book 
  13.      */  
  14.     public void add(@WebParam(name="book")BookEntity book);  
  15.       
  16.     /** 
  17.      * 根据ID,查询书籍 
  18.      * @param id 
  19.      * @return 
  20.      */  
  21.     public BookEntity query(@WebParam(name="id")Integer id);  
  22. }  
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);
}


 

  1. package org.ygy.cxf.service.impl;  
  2.   
  3. import java.util.Date;  
  4.   
  5. import javax.jws.WebService;  
  6.   
  7. import org.ygy.cxf.entity.BookEntity;  
  8. import org.ygy.cxf.service.IBookService;  
  9. import org.ygy.cxf.util.DateUtil;  
  10.   
  11. @WebService(endpointInterface="org.ygy.cxf.service.IBookService")  
  12. public class BookService implements IBookService {  
  13.   
  14.     @Override  
  15.     public void add(BookEntity book) {  
  16.         System.out.println("id->" + book.getId());  
  17.         System.out.println("name->" + book.getName());  
  18.         System.out.println("author->" + book.getAuthor());  
  19.         System.out.println("publicationDate->" + DateUtil.toStr(book.getPublicationDate()));  
  20.     }  
  21.   
  22.     @Override  
  23.     public BookEntity query(Integer id) {  
  24.         BookEntity book = new BookEntity();  
  25.         book.setId(1001);  
  26.         book.setName("OnePiece");  
  27.         book.setAuthor("YGY");  
  28.         book.setPublicationDate(new Date());  
  29.           
  30.         return book;  
  31.     }  
  32.   
  33. }  
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;
	}

}


 

  1. package org.ygy.cxf.util;  
  2.   
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Date;  
  5.   
  6. public class DateUtil {  
  7.     private static SimpleDateFormat sdf = null;  
  8.       
  9.     private DateUtil() {  
  10.           
  11.     }  
  12.       
  13.     /** 
  14.      * 将日期转换成字符串 
  15.      * @param date 日期 
  16.      * @return 
  17.      */  
  18.     public static String toStr(Date date) {  
  19.         sdf = new SimpleDateFormat(Configs.COMMON);  
  20.           
  21.         return sdf.format(date);  
  22.     }  
  23. }  
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);
	}
}


 

  1. package org.ygy.cxf.util;  
  2.   
  3. public class Configs {  
  4.     public static final String COMMON = "yyyy-MM-dd HH:mm:ss";  
  5. }  
package org.ygy.cxf.util;

public class Configs {
	public static final String COMMON = "yyyy-MM-dd HH:mm:ss";
}


 

5.新建Spring配置文件

  1. <beans xmlns="http://www.springframework.org/schema/beans"  
  2.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns:jaxws="http://cxf.apache.org/jaxws"  
  4.     xsi:schemaLocation="  
  5. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
  6. http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">  
  7.   
  8.     <import resource="classpath:META-INF/cxf/cxf.xml" />  
  9.     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />  
  10.   
  11.     <jaxws:endpoint  
  12.         id="bookService"  
  13.         implementor="org.ygy.cxf.service.impl.BookService"  
  14.         address="/BookService"  
  15.     ></jaxws:endpoint>  
  16.         
  17. </beans>  
<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

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  3.   <modelVersion>4.0.0</modelVersion>  
  4.   <groupId>org.ygy.cxf</groupId>  
  5.   <artifactId>cxf-date</artifactId>  
  6.   <packaging>war</packaging>  
  7.   <version>0.0.1-SNAPSHOT</version>  
  8.   <name>cxf-date Maven Webapp</name>  
  9.   <url>http://maven.apache.org</url>  
  10.     
  11.   <!-- 属性配置 -->  
  12.     <properties>  
  13.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  14.         <cxf.version>2.7.5</cxf.version>  
  15.         <spring.version>3.1.1.RELEASE</spring.version>  
  16.     </properties>  
  17.   
  18.     <dependencies>  
  19.         <dependency>  
  20.             <groupId>junit</groupId>  
  21.             <artifactId>junit</artifactId>  
  22.             <version>4.10</version>  
  23.             <scope>test</scope>  
  24.         </dependency>  
  25.   
  26.           
  27.         <dependency>  
  28.             <groupId>org.apache.cxf</groupId>  
  29.             <artifactId>cxf-rt-frontend-jaxws</artifactId>  
  30.             <version>${cxf.version}</version>  
  31.         </dependency>  
  32.   
  33.         <dependency>  
  34.             <groupId>org.apache.cxf</groupId>  
  35.             <artifactId>cxf-rt-transports-http</artifactId>  
  36.             <version>${cxf.version}</version>  
  37.         </dependency>  
  38.   
  39.         <dependency>  
  40.             <groupId>org.apache.cxf</groupId>  
  41.             <artifactId>cxf-rt-transports-http-jetty</artifactId>  
  42.             <version>${cxf.version}</version>  
  43.         </dependency>  
  44.   
  45.         <dependency>  
  46.             <groupId>org.springframework</groupId>  
  47.             <artifactId>spring-context</artifactId>  
  48.             <version>${spring.version}</version>  
  49.         </dependency>  
  50.   
  51.         <dependency>  
  52.             <groupId>org.springframework</groupId>  
  53.             <artifactId>spring-web</artifactId>  
  54.             <version>${spring.version}</version>  
  55.         </dependency>  
  56.   
  57.         <dependency>  
  58.             <groupId>org.eclipse.jetty</groupId>  
  59.             <artifactId>jetty-webapp</artifactId>  
  60.             <version>8.1.11.v20130520</version>  
  61.         </dependency>  
  62.   
  63.     </dependencies>  
  64.   
  65.     <build>  
  66.         <finalName>cxf-date</finalName>  
  67.           
  68.         <plugins>  
  69.             <plugin>  
  70.                 <groupId>org.apache.cxf</groupId>  
  71.                 <artifactId>cxf-codegen-plugin</artifactId>  
  72.                 <version>${cxf.version}</version>  
  73.                 <executions>  
  74.                     <execution>  
  75.                         <id>generate-sources</id>  
  76.                         <phase>generate-sources</phase>  
  77.                         <configuration>  
  78.                             <sourceRoot>src/main/resources/cxf</sourceRoot>  
  79.                             <wsdlOptions>  
  80.                                 <wsdlOption>  
  81.                                     <wsdl>http://localhost:8080/cxf-date/services/BookService?wsdl</wsdl>  
  82.                                     <frontEnd>jaxws21</frontEnd>  
  83.                                     <faultSerialVersionUID>1</faultSerialVersionUID>  
  84.                                 </wsdlOption>  
  85.                             </wsdlOptions>  
  86.                         </configuration>  
  87.                         <goals>  
  88.                             <goal>wsdl2java</goal>  
  89.                         </goals>  
  90.                     </execution>  
  91.                 </executions>  
  92.             </plugin>  
  93.         </plugins>  
  94.     </build>  
  95. </project>  
<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代码。

 

<think>好的,我需要帮助用户在IntelliJ IDEA中使用Apache CXF根据WSDL生成Java客户端代码。首先,我得回顾一下用户提供的引用内容,确保答案准确。 用户提到了引用[2]和[4],其中提到使用CXFwsdl2java工具,以及配置环境变量。我需要整理步骤,确保用户能够一步步操作。首先,应该安装Apache CXF,并配置环境变量,这可能包括设置CXF_HOME和Path变量。然后,在IDEA中配置CXF插件或使用命令行工具生成代码。 接下来,用户需要在IDEA中运行wsdl2java命令。可能需要通过终端或者外部工具配置来执行。引用[3]提到了使用java命令运行WSDL2Java,但那是针对Axis的,而用户需要的是CXF,所以应该使用CXFwsdl2java脚本。 另外,用户可能需要配置JDK,确保JAVA_HOME正确设置,如引用[4]所述。还要注意WSDL文件的路径,生成代码时需要指定包名和输出目录。 最后,可能需要验证生成代码是否正确,并添加到项目中。还要考虑是否需要添加CXF的依赖到项目的构建文件中,比如Maven或Gradle。用户可能不熟悉这些步骤,所以需要详细说明每个环节,避免遗漏关键点。</think>以下是在 IntelliJ IDEA 中通过 Apache CXF 根据 WSDL 生成 Java 客户端代码的详细步骤: --- ### 步骤 1:安装 Apache CXF 1. 访问 [Apache CXF 官网](https://cxf.apache.org/) 下载最新版本(如 3.5.5) 2. 解压到本地目录(例如 `D:\apache-cxf-3.5.5`) 3. 配置环境变量: - 新建系统变量 `CXF_HOME`,值为解压路径(例如 `D:\apache-cxf-3.5.5`)[^4] - 在 `Path` 变量中添加 `%CXF_HOME%\bin` --- ### 步骤 2:准备 WSDL 文件 1. 将 WSDL 文件保存到本地(例如 `D:\wsdl\service.wsdl`) 2. 检查 WSDL 文件有效性:通过浏览器或工具(如 SoapUI)验证是否可访问 --- ### 步骤 3:在 IntelliJ IDEA 中生成代码 #### 方法一:通过命令行工具(推荐) 1. 打开 IDEA 的 Terminal(Alt+F12) 2. 执行生成命令: ```bash wsdl2java -client -d src/main/java -p com.example.client -encoding UTF-8 D:\wsdl\service.wsdl ``` - `-client`:生成客户端代码 - `-d`:指定输出目录 - `-p`:定义包名 - `-encoding`:设置编码格式 #### 方法二:通过 IDEA 插件 1. 安装插件:`File > Settings > Plugins` 搜索 `CXF WebServices` 并安装 2. 右键项目目录选择 `New > WebService Client` 3. 输入 WSDL 路径和输出目录,点击生成[^2] --- ### 步骤 4:验证生成结果 1. 检查 `src/main/java/com/example/client` 目录下是否生成以下文件: - Service 接口 - Service 实现类 - DTO 数据传输对象 2. 在项目中添加 CXF 依赖(Maven): ```xml <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.5.5</version> </dependency> ``` --- ### 常见问题解决 1. **环境变量失效**:重启 IDEA 使环境变量生效 2. **WSDL 访问失败**:尝试将 WSDL 下载到本地再生成 3. **依赖冲突**:使用 `mvn dependency:tree` 检查依赖树 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值