webService项目
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
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(); } } }
WsAuthHandler.java
package com.yunix.service.auth; import java.io.IOException; import javax.security.auth.callback.Callback; import javax.security.auth.callback.CallbackHandler; import javax.security.auth.callback.UnsupportedCallbackException; import javax.xml.soap.SOAPException; import org.apache.cxf.interceptor.Fault; import org.apache.ws.security.WSPasswordCallback; /** * 密码回调处理类 * @author yunix * 2013-3-4 上午10:59:30 */ public class WsAuthHandler implements CallbackHandler { @Override public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { WSPasswordCallback pc = (WSPasswordCallback)callbacks[0]; if (!"file_client".equals(pc.getIdentifier())) { SOAPException soapExc = new SOAPException(""); throw new Fault(soapExc); } int usage = pc.getUsage(); if (usage == WSPasswordCallback.USERNAME_TOKEN) { pc.setPassword("123456"); } } }
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-extension-soap.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> <bean id="loggingInInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor" /> <bean id="wss4jInInterceptor" class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor"> <constructor-arg> <map> <entry key="action" value="UsernameToken" /> <entry key="passwordType" value="PasswordText" /> <entry key="user" value="admin"/> <entry key="passwordCallbackClass" value="com.yunix.service.auth.WsAuthHandler" /> </map> </constructor-arg> </bean> <jaxws:endpoint id="file" implementor="com.yunix.service.webservice.FileService" address="/fileService"> <jaxws:inInterceptors> <ref bean="loggingInInterceptor"/> <ref bean="wss4jInInterceptor"/> </jaxws:inInterceptors> </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>
=================================
webservice完成
下面是测试项目
package com.yunix.service.auth; import java.io.IOException; import javax.security.auth.callback.Callback; import javax.security.auth.callback.CallbackHandler; import javax.security.auth.callback.UnsupportedCallbackException; import org.apache.ws.security.WSPasswordCallback; /** * 密码回调处理类 * @author yunix * 2013-3-4 上午10:59:30 */ public class WsClientAuthHandler implements CallbackHandler { @Override public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { WSPasswordCallback pc = (WSPasswordCallback)callbacks[0]; pc.setIdentifier("file_client"); pc.setPassword("123456"); } }
拷贝FileEntity.java、IFileService.java到客户端项目
xml配置文件如下:
<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" />
<bean id="wss4JOutInterceptor" class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor"> <constructor-arg> <map> <entry key="action" value="UsernameToken" /> <entry key="passwordType" value="PasswordText" /> <entry key="user" value="admin" /> <entry key="passwordCallbackClass" value="com.yunix.service.auth.WsClientAuthHandler" /> </map> </constructor-arg> </bean> <jaxws:client id="ws-file" address="http://localhost:8080/service-file/fileService" serviceClass="com.yunix.service.webservice.IFileService"> <jaxws:outInterceptors> <ref bean="wss4JOutInterceptor" /> </jaxws:outInterceptors> </jaxws:client>
测试代码
package com; import java.io.File; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import org.junit.Test; import org.unitils.UnitilsJUnit4; import org.unitils.spring.annotation.SpringApplicationContext; import org.unitils.spring.annotation.SpringBeanByType; import com.yunix.service.entity.FileEntity; import com.yunix.service.webservice.IFileService; /** * 类说明 * @author yunix * 2013-3-4 下午01:13:49 */ @SpringApplicationContext("spring.xml") public class FileServiceTest extends UnitilsJUnit4 { @SpringBeanByType private IFileService fileService; @Test public void testFile(){ 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)); fileService.uploadFile(file); System.out.println("success"); } }
相关推荐
基于spring+cxf实现用户文件传输的webservice 在本文中,我们将探讨如何使用Spring+CXF实现用户文件传输的Webservice。该Webservice提供了基本的报文上传和查询功能,同时还提供了用户身份验证功能。 Spring 和 ...
springboot cxf下载上传springboot cxf下载上传springboot cxf下载上传springboot cxf下载上传springboot cxf下载上传springboot cxf下载上传springboot cxf下载上传springboot cxf下载上传springboot cxf下载上传...
### CXF实现SSL安全验证 在现代网络应用中,安全通信是至关重要的。Apache CXF 是一个开源项目,提供了一套强大的工具和服务框架,用于构建和开发基于标准的服务(如 Web Services)。本文将详细介绍如何使用 CXF ...
- **Spring XML配置**:在Spring配置文件中定义CXF客户端和服务端的安全策略,例如使用`<cxf:bus>`和`<cxf:properties>`元素。 - **WSDL-first方式**:在WSDL文件中定义安全策略,CXF会自动读取并应用这些策略。 *...
例如,WS-SecurityPolicy定义了服务端和客户端之间的安全约束,而WS-Trust则处理安全令牌的请求和验证。在CXF中,可以通过XML配置或编程方式来配置这些策略。 4. **OAuth**:适用于分布式环境,允许第三方应用代表...
在本文中,我们将深入探讨如何在Apache CXF框架中实现客户端和服务器端的权限验证。Apache CXF是一个开源的Java框架,主要用于构建和开发服务导向架构(SOA)和服务级应用程序。它支持多种Web服务标准,包括SOAP、...
【Cxf转换器示例】是一个关于Web服务技术的实践项目,主要聚焦于Apache CXF框架中的转换器(Converter)功能。Apache CXF是一个开源的Java框架,它用于构建和开发服务导向架构(SOA)和RESTful应用程序。CXF不仅支持...
本篇文章将深入探讨如何使用CXF实现文件的上传和下载功能,这对于任何涉及文件交互的应用程序都是至关重要的。 在CXF中,实现文件上传通常涉及到创建一个Web服务接口,该接口接受Multipart请求,这允许用户发送多个...
【标题】:“CXF Webservice 文件分块上传” 在IT领域,CXF是一个广泛使用的开源框架,用于构建和部署Web服务。它支持多种Web服务规范,包括SOAP、RESTful等。"文件分块上传"是一种处理大文件的技术,通常用于优化...
在提供的压缩包文件中,"cxfclientexample"可能是CXF客户端的一个示例项目,用于演示如何使用CXF进行文件的断点上传和下载。这个示例可能包括了配置文件、源代码以及必要的测试用例,帮助开发者理解如何在实际应用中...
例如,你可以创建一个`@WebService`注解的服务接口,然后实现该接口以处理文件上传和下载的业务逻辑。 2. **设置数据传输**:文件通常是通过HTTP或HTTPS协议传输的,因此你需要在服务方法中使用`javax.activation....
本文将深入探讨如何在CXF中实现文件记录报文日志,而非仅仅在控制台打印。 首先,理解CXF的日志系统。CXF使用Java的日志抽象层,如Log4j、Java Util Logging (JUL) 或者 Commons Logging。这意味着你可以选择任意一...
【标题】"CXF安全验证例子"涉及到的是Apache CXF框架在实现Web服务时的安全验证机制。Apache CXF是一个开源的Java框架,用于构建和部署Web服务。它提供了丰富的功能,包括SOAP、RESTful API、WS-*规范支持以及安全...
此外,XSD文件还可以用于验证XML消息,确保其符合预先定义的模式。 3. **Spring整合CXF**: Spring框架是企业级Java应用的首选,而CXF的Spring整合使得两者可以无缝配合。通过Spring,开发者可以使用声明式的方式...
**标题:“验证客户端源码CXF”** **正文:** CXF(Camel XFire)是一个开源服务框架,它允许开发人员创建和部署基于Java API for Web Services (JAX-WS) 和Java API for RESTful Web Services (JAX-RS) 的Web服务...
CXF框架约束文件,用于导入catelog,CXF是apache旗下的开源框架,由Celtix + XFire这两门经典的框架合成,是一套非常流行的web service框架。
CXF提供了`wsdl2java`工具,可以基于Web服务的WSDL文件生成客户端代码。你可以使用Maven的CXF插件或者命令行工具来执行此操作。 生成客户端代码后,你可以在Spring Boot客户端应用中引入这些生成的类,并使用它们来...
- 验证文件类型:只允许特定类型的文件上传,以防止恶意文件。 - 限制文件大小:设置上传文件的最大尺寸,防止消耗过多服务器资源。 - 异步处理:使用异步处理大文件上传,避免阻塞服务器线程。 - 安全存储:确保...
【标题】:“CXF客户端:对象参数,文件上传下载及断点续传功能” 在Java Web开发中,CXF框架广泛用于实现Web服务,包括SOAP和RESTful接口。本示例着重于CXF客户端如何处理对象参数传递以及支持文件的上传和下载,...