Hession和Jersey实现应用服务器和图片服务器分离(向外提供服务接口)
2016-10-09 16:47
423 查看
1、修改Tomcat的web.xml文件,支持文件的上传
2、修改项目的编码格式和Tomcat的编码格式统一。防止出现文件名称的中文乱码问题
1.项目的编码格式
2.Tomcat的编码格式
3、建立FileStore的Web项目,在里面建立upload文件夹,用于存放上传的文件
4、建立FileUploader的Web项目,通过Hession发布文件上传的服务
4.1 上传文件的接口
4.2 上传文件的实现类,利用jersey上传图片到服务器
4.3 用于记录图片地址的JavaBean
4.4 修改web.xml文件利用Hession发布服务
4.5 测试hession发布的服务
5、建立FileUploaderTest的客户端程序
5.1 客户端的代码结构如下(需要用到服务端的两个Java类)
5.2 客户端的测试代码
6、代码下载
[url=http://pan.baidu.com/s/1c1Q3X5Y]FileStore
FileUploader
FileUploaderTest
tomcat7
<servlet> <init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param> </servlet>
2、修改项目的编码格式和Tomcat的编码格式统一。防止出现文件名称的中文乱码问题
1.项目的编码格式
2.Tomcat的编码格式
3、建立FileStore的Web项目,在里面建立upload文件夹,用于存放上传的文件
4、建立FileUploader的Web项目,通过Hession发布文件上传的服务
4.1 上传文件的接口
public interface FileUploadServiceI { public UploadResult upload(String filename, InputStream data); }
4.2 上传文件的实现类,利用jersey上传图片到服务器
public class FileUploadServiceImpl implements FileUploadServiceI { public UploadResult upload(String filename, InputStream data) { UploadResult uploadResult = null; Client client = null; WebResource wr = null; ByteArrayOutputStream bos = null; try { // 创建Client对象 注意是 jersey 中的 Client com.sun.jersey.api.client.Client; client = Client.create(); // 服务器地址 // 如果服务器地址有多个,可以使用简单的轮询算法,实现图片存放的负载 String url = "http://192.168.2.100:8080/FileStore/"; String path = "upload/" + filename; String filePath = url + path; wr = client.resource(filePath); // 要传输的数据流 byte[] buffer = new byte[1024]; int len = 0; bos = new ByteArrayOutputStream(); while ((len = data.read(buffer)) != -1) { bos.write(buffer, 0, len); } bos.flush(); // 输入流 读图片到内存中 byte[] readFileToByteArray = bos.toByteArray(); // 向服务器发送文件 wr.put(readFileToByteArray); // 返回图片的存放信息 // 1.url 图片服务器的地址 // 2.path 图片的存放路径 uploadResult = new UploadResult(url, path); } catch (IOException e) { e.printStackTrace(); } System.out.println("文件上传成功"); return uploadResult; } }
4.3 用于记录图片地址的JavaBean
//因为要进行网络传输,所以要进行序列化 public class UploadResult implements Serializable { private static final long serialVersionUID = 4681292538876502348L; private String url; private String path; public UploadResult() { } public UploadResult(String url, String path) { this.url = url; this.path = path; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getPath() { return path; } public void setPath(String path) { this.path = path; } @Override public String toString() { return "UploadResult "; } }
4.4 修改web.xml文件利用Hession发布服务
<?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"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>FileUploadService</servlet-name> <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class> <init-param> <!-- home-class也可以写为service-class --> <param-name>home-class</param-name> <!-- 服务器对接口的现实,供客户端调用 --> <param-value>file.upload.service.impl.FileUploadServiceImpl</param-value> </init-param> <init-param> <!-- 提供给客户端调用的接口,这里的home-api配置不是必须的,可以不配置 --> <!--home-api也可以写为api-class --> <param-name>home-api</param-name> <!-- 客户端接口 --> <param-value>file.upload.service.FileUploadServiceI</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>FileUploadService</servlet-name> <url-pattern>/FileUploadService</url-pattern> </servlet-mapping> </web-app>
4.5 测试hession发布的服务
5、建立FileUploaderTest的客户端程序
5.1 客户端的代码结构如下(需要用到服务端的两个Java类)
5.2 客户端的测试代码
public class FileUploaderClient { // Hessian服务的url private static final String url = "http://192.168.2.100:8080/FileUploader/FileUploadService"; public static void main(String[] args) throws Exception { // 创建HessianProxyFactory实例 HessianProxyFactory factory = new HessianProxyFactory(); // 获得Hessian服务的远程引用 FileUploadServiceI uploader = (FileUploadServiceI) factory.create( FileUploadServiceI.class, url); // 要上传的文件的路径 String filePath = "E:/文件上传.pdf"; // 读取需要上传的文件 InputStream data = new BufferedInputStream( new FileInputStream(filePath)); // 获取文件的名称 String fileName = FilenameUtils.getName(filePath); // 调用远程服务上传文件。 UploadResult uploadResult = uploader.upload(fileName, data); // 图片的存放地址为 System.out.println("文件的存放地址为:" + uploadResult.toString()); // 在实现开发里面,将图片存放的信息 // 以json的信息返回给客户端,实现图片的显示 }
6、代码下载
[url=http://pan.baidu.com/s/1c1Q3X5Y]FileStore
FileUploader
FileUploaderTest
tomcat7
相关文章推荐
- 09(maven+SSH)之使用jersey实现应用服务器和图片服务器分离
- 08 网上商城项目实战之使用jersey实现应用服务器和图片服务器分离
- 使用Jersey实现应用服务器和图片服务器分离
- 使用Jersey实现应用服务器和图片服务器分离
- 使用jersey实现应用服务器和图片服务器分离
- 网上销售平台--jersey实现应用服务器和图片服务器分离(六)
- 使用Jersey实现应用服务器和图片服务器分离
- 使用jersey实现应用服务器和图片服务器分离
- 使用Jersey实现图片服务器与应用服务器分离
- 09(maven+SSH)网上商城项目实战之使用jersey实现应用服务器和图片服务器分离
- 09(maven+SSH)网上商城项目实战之使用jersey实现应用服务器和图片服务器分离
- 搜应用网是中国最丰富的手机资源下载站,为你提供精彩的手机图片.手机应用软件.手机游戏,定制服务手机用户的个性化需求,是广大手机用户.手机开发者.手机软件界面设计人员的广阔乐园.
- Nginx提供代理服务(网站代理),nginx实现负载均衡集群和高可用集群、nginx实现网站动静页面分离
- 将图片服务和应用服务分离
- Java微信公众平台开发(九)——关键字回复以及客服接口实现(该公众号暂时无法提供服务解决方案)
- 树莓派应用之家庭网络中部署一台可在公网提供服务的低功耗服务器
- 提供一个在测试环境中,监控应用服务器的外部接口调用的方法(高峰)
- 《JavaWeb---简单应用---服务器向客户端提供音乐资源(三)》--- 利用struts实现文件下载,下载时改变文件的名称
- 网站架构:应用服务器和图片服务器分离
- 《JavaWeb---简单应用---服务器向客户端提供音乐资源(二)》---歌曲展示页面提升,实现渐变色显示,选中行变色