`
snrqtdhuqf
  • 浏览: 79311 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

cxf文件上传运行实例

    博客分类:
  • Java
 
阅读更多

Fileentity.java

package com.yunix.service.entity;

import javax.activation.DataHandler;

/**
 * 文件实体类
 * @author yunix
 * 2013-3-2 上午11:19:22
 */
public class FileEntity {

	private String fileName;
	private String fileType;
	private DataHandler file;
	
	public String getFileName() {
		return fileName;
	}
	public void setFileName(String fileName) {
		this.fileName = fileName;
	}
	public String getFileType() {
		return fileType;
	}
	public void setFileType(String fileType) {
		this.fileType = fileType;
	}
	public DataHandler getFile() {
		return file;
	}
	public void setFile(DataHandler file) {
		this.file = file;
	}
	
}

 IFileService.java

package com.yunix.service.webservice;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.soap.MTOM;

import com.yunix.service.entity.FileEntity;

/**
 * 文件service接口
 * @author yunix
 * 2013-3-2 上午11:22:22
 */
@WebService
@MTOM
public interface IFileService {

	@WebMethod
	public void uploadFile(@WebParam(name="fileEntity")FileEntity fileEntity);
}

 FileService.java

package com.yunix.service.webservice;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.activation.DataHandler;

import com.yunix.service.entity.FileEntity;

/**
 * 文件Service实现
 * @author yunix
 * 2013-3-2 上午11:24:57
 */

public class FileService implements IFileService {

	@Override
	public void uploadFile(FileEntity fileEntity) {
		System.out.println("1");
		DataHandler handler = fileEntity.getFile();
		System.out.println("2");
		try {
			InputStream is = handler.getInputStream();
			OutputStream os = new FileOutputStream(new File("F:/"+fileEntity.getFileName()+"."+fileEntity.getFileType()));
			byte[] b = new byte[100000];
			int bytesRead = 0;
			while((bytesRead = is.read(b)) != -1){
				os.write(b, 0,bytesRead);
			}
			System.out.println("3");
			os.flush();
			os.close();
			is.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

 cxf-servlet.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: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="file" implementor="com.yunix.service.webservice.FileService" address="/fileService">
	</jaxws:endpoint>
	  
</beans>

 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">
    <display-name>cxf</display-name>
	<description>Apache CXF Endpoint</description>
	<listener>           
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<context-param>
    	<param-name>contextConfigLocation</param-name>
    	<param-value>classpath*:cxf-servlet.xml</param-value>
  	</context-param>
    <servlet>
        <servlet-name>cxf</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>cxf</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

 启动并运行项目

http://localhost:8080/service-file/fileService?wsdl

 可查看wsdl

测试代码:

package com.test;

import java.io.File;  

import javax.activation.DataHandler;  
import javax.activation.DataSource;  
import javax.activation.FileDataSource;  
  
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;  

import com.yunix.service.entity.FileEntity;
import com.yunix.service.webservice.IFileService;
  
public class Test {  
    public static void main(String[] args) throws Exception {  
          
        String url = "http://localhost:8080/service-file/fileService?wsdl";  
         FileEntity file = new FileEntity();  
         file.setFileName("2012-03-04TestFile");
         file.setFileType("jpg");  
         DataSource source = new FileDataSource(new File("d:\\123456.jpg"));  
         file.setFile(new DataHandler(source));   
  
         JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();  
           
         factory.setServiceClass(IFileService.class);  
         factory.setAddress(url);  
         IFileService client = (IFileService) factory.create();  
         try {  
             client.uploadFile(file);  
        } catch (Exception e) {  
            System.out.println(e);  
        }          
           
         System.out.println("success");  
    }  
  
}

 

分享到:
评论

相关推荐

    CXF开发Web Service实例demo

    本实例将深入探讨如何使用CXF来开发Web Service。 首先,让我们了解CXF的核心功能。CXF支持两种主要的Web Service规范:SOAP(简单对象访问协议)和REST(代表性状态转移)。SOAP是基于WSDL(Web服务描述语言)的,...

    CXF 使用实例集成

    这个集成实例主要展示了如何使用CXF来创建和消费Web服务,包括设置输入和输出拦截器、用户验证以及文件上传等功能。让我们深入探讨一下这些知识点。 1. **CXF 创建 Web Service** - **服务接口定义**:首先,我们...

    webservice文件上传下载.zip

    综上所述,"webservice文件上传下载.zip"是一个关于如何使用Web服务进行文件操作的实例,涵盖了文件上传、下载的基本原理以及相关的安全措施。通过学习和实践这个示例,开发者可以更好地理解和应用Web服务技术。

    cxf+spring webservice server demo

    这个项目展示了如何将CXF与Spring集成,以创建、部署和运行一个高效的Web服务。 【描述】指出,由于文件大小的限制,客户端部分是分开上传的。这意味着该项目不仅包括了服务端的实现,而且可能需要配合一个单独的...

    实战Mule:利用Mule调用XFire发布的文件上传服务

    本篇文章将深入探讨如何利用Mule调用XFire发布的文件上传服务,通过实践来提升我们的IT技能。 首先,我们需要理解Mule ESB。Mule是一个开源的ESB,它提供了多种连接器,可以轻松地连接到各种系统,如数据库、Web...

    apache-cxf-jar包(分两次).rar

    这个资源,"apache-cxf-jar包(分两次).rar",显然是一个包含Apache CXF库的压缩文件,由两个部分组成,这里只列出了第一部分:"apache-cxf-jar包(1)"。下面我们将深入探讨Apache CXF的核心概念、用途以及如何...

    WebService上传下载

    WebService上传下载是一个常见的Web应用程序功能,它涉及到CXF框架与Spring框架的集成,以及通过WebService接口来处理文件的下载操作。下面将详细讲解这个主题的相关知识点。 首先,让我们了解一下CXF。CXF是一个...

    CxfWevservice数据库补充,前面上传的文件里面的数据库错了,少了张表,补允上传一下

    请将这个文件导入您的数据库管理系统,以确保您的CxfWebService实例拥有完整、准确的数据库结构。导入过程可能会涉及到SQL脚本执行,具体步骤可能因所使用的数据库系统(如MySQL、PostgreSQL或Oracle)而异,通常...

    java调用.net发布的webservice(asmx)

    1. 添加CXF依赖:在Java项目的pom.xml文件中引入Apache CXF的依赖,确保能使用CXF的工具生成客户端代码。 2. 使用WSDL2Java工具:通过.NET ASMX Web服务的WSDL地址,运行CXF的WSDL2Java命令生成Java客户端代码。这...

    JAVA面试题(中).pdf

    基于Java的Web项目中实现文件上传和下载需要利用HTML表单和一些特定的JSP标签或者Servlet API来完成。 服务器收到用户提交的表单数据,会根据表单的method属性值调用Servlet中的doGet()或doPost()方法。GET方法用于...

Global site tag (gtag.js) - Google Analytics