我目前正在开发Java Web Service项目。它部署在Apache Tomcat 7服务器上,我需要提供一个服务来将文件上传到服务器。此外,Web服务应该可供不使用java的系统使用。因此,我需要使我的Web服务普遍适用于所有客户端(即C#,php等)。 浏览网页后,我找到了很多解决方案,但没有一个解释不解释我如何能够满足上述标准。更具体地说,我遇到了MTOM和Java WS Annotations,它们被引用对于指定普遍接受的数据结构(例如Java的DataHandler)是必不可少的。 让我发布我的网络服务的示例代码:
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对象将是正确的类型。另外,我可以用任何方式提高文件上传操作的安全性和性能吗?
谢谢