Java利用fastdfs-client-java开发工具包操作FastDFS分布式文件系统

xiaoxiao2021-02-28  94

1.下载fastdfs-client-java开发工具包

https://github.com/happyfish100/fastdfs-client-java

2.把fastdfs-client-java开发工具包打包到本地的Maven仓库,在Windows窗口输入如下命令(注意:本机必须安装Maven,并配置Maven环境变量,并且盘符要切换到fastdfs-client-java解压的目录下)

mvn clean install 当上述操作完成时,我们会看到Maven本地仓库有了fastdfs-client-java-1.27-SNAPSHOT.jar。 此时我们就可以在我们需要的项目中添加对它的依赖,就可以使用fastdfs-client-java此开发工具包。 FastDFS有两个角色:跟踪服务器和存储服务器。跟踪服务器负责文件访问的调度和负载均衡,存储文件服务器负责文件的存储、文件同步、提供文件访问接口,管理元数据(文件相关属性,键值对方式),例如:width = 1024,键为“width”,值为“1024”。

3.Java连接FastDFS分布式文件系统,遇到的那些坑......

(1)当出现此异常时:java.net.ConnectException: Connection refused: connect。请检查FastDFS分布式文件系统所需的tracker server服务、storage server服务是否启动,如果都启动了,还是出现此异常,那么请检查tracker.conf、storage.conf是否配置正确。 如果配置正确,还是出现异常,那么请检查Linux防火墙是否拦截了FastDFS相应的端口号,相应配置如下: <1>tracker.conf配置文件修改如下: 如果bind_addr的值不填,则绑定所有主机。填,则填入你装FastDFS分布式文件系统的主机IP地址。 在这个配置文件中,我们也可以看到FastDFS分布式文件系统中的跟踪服务器的默认端口为22122。 <2>storage.conf配置文件修改如下: 当然上图,我们只需要改bind_addr的值即可,当然你也可以不改(bind_addr的值不填,则绑定所有主机),在这里我们也可以看到存储服务器的默认端口号为23000。在这里需要注意的是我们group_name的值,我们在用Java客户端上传文件时,如果不指定group_name的值,那么它就是默认值group1,如果指定了此值,但指定的值与默认值不一致,那么将出现如下异常: org.csource.common.MyException: getStoreStorage fail, errno code: 2 at org.csource.fastdfs.StorageClient.newWritableStorageConnection(StorageClient.java:1629) at org.csource.fastdfs.StorageClient.do_upload_file(StorageClient.java:639) at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:197) at xin.soar.example.FastDFSUtil.upload_file(FastDFSUtil.java:59) at xin.soar.example.TestFastDFSUtil.upload_file(TestFastDFSUtil.java:39) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 其他有关于FastDFS的配置信息请看此说明:http://bbs.chinaunix.net/thread-1941456-1-1.html 那么此时我们就去看看Linux防火墙是否对这两个的端口是否开放,输入如下命令: vim /etc/sysconfig/iptables 大家可以去看你的配置文件是否开放了其端口,如果没开,那么请输入如下命令: -A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT保存退出,如果上述你都做了,请一定要记得重启Linux防火墙,输入如下命令: /etc/init.d/iptables restart 然后再分别重启追踪服务器、存储服务器,输入如下命令: /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart 最后再用我们写好的Java代码,来连接FastDFS,进行文件上传,下载,删除等操作。 当我们看见以上信息时,那么说明恭喜你,文件上传成功!
转载请注明原文地址: https://www.6miu.com/read-70633.html

最新回复(0)