`
xkorey
  • 浏览: 150737 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

cxf + spring +maven +tomat7 搭建webservice(MTOM) 上传文件(一)环境准备

阅读更多
1.首先需要下载cxf。官方下载地址:http://cxf.apache.org/download.html
下载 Binary distribution zip。
2.解压至任意目录,以便之后用cxf的工具生成java调用的类。目录结构是这样的。

3.在eclipse中新建maven工程,编写pom.xml 引入相关jar。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>ws</groupId>
  <artifactId>ws</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>ws Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-context</artifactId>
    	<version>3.2.3.RELEASE</version>
    </dependency>
    <dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-context-support</artifactId>
		<version>3.2.3.RELEASE</version>
	</dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-web</artifactId>
    	<version>3.2.3.RELEASE</version>
    </dependency>
    <dependency>
		<groupId>org.springframework.security</groupId>
		<artifactId>spring-security-core</artifactId>
		<version>3.1.4.RELEASE</version>
	</dependency>
	    <dependency>
		<groupId>org.apache.cxf</groupId>
		<artifactId>cxf-rt-frontend-jaxrs</artifactId>
		<version>2.7.5</version>
	</dependency>
	<dependency>
		<groupId>org.apache.cxf</groupId>
		<artifactId>cxf-api</artifactId>
		<version>2.7.5</version>
	</dependency>
	<dependency>
		<groupId>org.apache.cxf</groupId>
		<artifactId>cxf-rt-frontend-jaxws</artifactId>
		<version>2.7.5</version>
	</dependency>
	 <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-databinding-xmlbeans</artifactId>
            <version>2.7.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>2.7.6</version>
        </dependency>
	<dependency>
		<groupId>javax.xml.ws</groupId>
		<artifactId>jaxws-api</artifactId>
		<version>2.2.11</version>
	</dependency>
	<dependency>
		<groupId>javax.activation</groupId>
		<artifactId>activation</artifactId>
		<version>1.1.1</version>
	</dependency>
     <dependency>
	<groupId>commons-httpclient</groupId>
	<artifactId>commons-httpclient</artifactId>
	<version>3.1</version>
</dependency>
            <dependency>
	<groupId>org.apache.ws.commons.axiom</groupId>
	<artifactId>axiom-api</artifactId>
	<version>1.2.14</version>
</dependency>

    <dependency>
		<groupId>org.apache.xbean</groupId>
		<artifactId>xbean-spring</artifactId>
		<version>3.14</version>
	</dependency>                       
    
    <dependency>
		<groupId>com.caucho</groupId>
		<artifactId>hessian</artifactId>
		<version>4.0.7</version>
	</dependency>
	            
                        
	<dependency>
		<groupId>org.apache.cxf</groupId>
		<artifactId>cxf-rt-bindings-soap</artifactId>
		<version>2.7.5</version>
	</dependency>
                        
  </dependencies>
  <build>
    <finalName>ws</finalName>
    <plugins>
	 <plugin>  
            <groupId>org.apache.tomcat.maven</groupId>  
            <artifactId>tomcat7-maven-plugin</artifactId>  
            <version>2.0-SNAPSHOT</version>  
            <configuration>  
                <url>http://localhost:8080/manager/text</url>   
                <server>tomcat7</server> 
                <username>admin</username> 
                <password>admin</password>
            </configuration>  
        </plugin>  
	        <plugin>
			 <groupId>org.apache.maven.plugins</groupId>
			 <artifactId>maven-compiler-plugin</artifactId>
			 </plugin>
        <plugin>
        	<groupId>org.apache.maven.plugins</groupId>
				  <artifactId>maven-war-plugin</artifactId>
				  <version>2.1.1</version>
        </plugin>
    </plugins>
  </build>
</project>


4.在web.xml中配置spring和cxf servlet,web.xml文件内容如下
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <context-param> 
        <param-name>contextConfigLocation</param-name> 
        <param-value>classpath:ws.xml</param-value> 
    </context-param> 
  <listener> 
        <listener-class> 
            org.springframework.web.context.ContextLoaderListener 
        </listener-class> 
    </listener> 
     <servlet> 
        <servlet-name>CXFServlet</servlet-name> 
        <display-name>CXF Servlet</display-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>/ecm/ws/*</url-pattern> 
    </servlet-mapping> 
    
</web-app>

spring 配置文件 ws.xml 的内容最后在贴出来。下一步写service接口。
5.hello world 接口类
@WebService
public interface HelloWorldService {
	
	public void sayHello();
}


接口实现类

public class HelloWorldServiceImpl implements HelloWorldService {

	public void sayHello() {
		System.out.println("hello world.");
	}

}


6.在spring中配置webservice,ws.xml 内容如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
    xmlns:jaxws="http://cxf.apache.org/jaxws"
    xsi:schemaLocation="
http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 	<import resource="classpath:META-INF/cxf/cxf.xml"/>
	<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
	<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
	
	<context:component-scan base-package="com.ws" />
	
	
	<jaxws:endpoint id="helloWorldService" 
    	implementor="com.bocins.ecm.ws.impl.HelloWorldServiceImpl" 
    	address="/helloWorld" >
	</jaxws:endpoint>
	
 </beans>


7.启动tomcat ,测试webservice 是否发布成功 在地址栏输入 http://localhost:8080/boc/ecm/ws/ 就可以看到所有已发布的webservice了。
如图

点击 {http://impl.ws.ecm.bocins.com/}HelloWorldServiceImplService 访问生成的 helloworld wsdl
如图:

说明webservice 服务发布成功。
可以进入下个环节了。

8.利用cxf提供的工具生成调用类,具体过程 如图


到bin目录下执行wsdl2java ,利用cxf提供的工具生成调用webservice的java类。


wsdl2java 参数简单说明 -p 指定要生成java类的包名称
                       -d src java类的根目录 存放包的文件夹
                       -all 生成webservice所有的调用类
                       加webservice地址

生成的类



9.将生成的java类,拷贝到eclipse
直接运行 HelloWorldService_HelloWorldServiceImplPort_Client

会在控制台输出:hello world.

webservice 环境已搭建成功。

下一章会写如何利用webservice上传下载文件。






  • 大小: 38.2 KB
  • 大小: 3.7 KB
  • 大小: 16.5 KB
  • 大小: 7.8 KB
  • 大小: 90.5 KB
分享到:
评论
5 楼 xkorey 2013-08-15  
ysihaoy 写道
xkorey 写道
ysihaoy 写道
我的项目为什么不能用最新版本的spring,而必须是CXF所使用的spring版本?

你是否有遇到类似的问题呢?

没遇到过,我是在原有普通工程上改成maven工程的。原有工程引用jar包的版本我直接拿过来的,并没用最新的spring。


但是看你spring的版本写的是3.2.3.RELEASE,这就应该是最新的啊

还有你所说的原有普通工程是指什么?
原有普通工程就是我没用maven,建的普通的web工程,jar包都是网上下的。spring现在的版本是3.2.4。我博客中的spring和cxf配合的很好。你可以试下我pom文件中引用的jar版本。
4 楼 ysihaoy 2013-08-15  
xkorey 写道
ysihaoy 写道
我的项目为什么不能用最新版本的spring,而必须是CXF所使用的spring版本?

你是否有遇到类似的问题呢?

没遇到过,我是在原有普通工程上改成maven工程的。原有工程引用jar包的版本我直接拿过来的,并没用最新的spring。


但是看你spring的版本写的是3.2.3.RELEASE,这就应该是最新的啊

还有你所说的原有普通工程是指什么?
3 楼 xkorey 2013-08-15  
ysihaoy 写道
我的项目为什么不能用最新版本的spring,而必须是CXF所使用的spring版本?

你是否有遇到类似的问题呢?

没遇到过,我是在原有普通工程上改成maven工程的。原有工程引用jar包的版本我直接拿过来的,并没用最新的spring。
2 楼 ysihaoy 2013-08-14  
我的项目为什么不能用最新版本的spring,而必须是CXF所使用的spring版本?

你是否有遇到类似的问题呢?
1 楼 梦回下花园 2013-08-02  
朋友加油啊,我还得着看下面的文章呢,呵呵

相关推荐

Global site tag (gtag.js) - Google Analytics