我目前正在开发一个 Java Web 服务项目。它部署在 Apache Tomcat 7 服务器上,我需要提供将文件上传到服务器的服务。此外,Web 服务应该可用于可能不使用 java 的系统。因此,我需要使我的 Web 服务对所有客户端(即 C#、php 等)普遍可用。浏览网页后,我找到了许多解决方案,但没有一个没有说明我如何才能满足上述条件。更具体地说,我遇到了 MTOM 和 Java WS 注释,它们被引用为指定普遍接受的数据结构(例如 Java 的 DataHandler)所必需的。让我发布我的 Web 服务的示例代码:
public class DataFileServer extends AbstractFileServer {
private int _buffer_size;
public DataFileServer() {
_buffer_size = 100000;
}
public DataFileServer(int bufferSize) {
_buffer_size = bufferSize;
}
@Override
public void uploadFile(String AbsoluteFilePath, FileObject FileInfo) {
DataHandler _handler = FileInfo.getHandler();
try {
InputStream is = _handler.getInputStream();
OutputStream os = new FileOutputStream(new File(AbsoluteFilePath +
"/" + FileInfo.getName() + "." +
FileInfo.getType()));
byte[] b = new byte[_buffer_size];
int bytesRead = 0;
while((bytesRead = is.read()) != -1) {
os.write(b, 0, bytesRead);
}
}catch(IOException e) {
e.printStackTrace();
}
}
}
DataFileServer 是要进行上传操作的类,Web Service 接口如下:
@WebService()
public class ETL_WS {
private DataHandler _handler;
private String server_dir = "/home/user/Desktop/FileServer";
public int fileUpload(String FileName, DataHandler CsvFile) {
FileObject _file = new FileObject(FileName, CsvFile);
_handler.uploadFile(this.server_dir, _file);
return 0;
}
}
我的问题是,我将如何确保提供给我的 Web 服务的 DataHandler 对象是正确的类型。另外,我可以通过任何方式提高文件上传操作的安全性和性能吗?
谢谢