2

我目前正在开发一个 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 对象是正确的类型。另外,我可以通过任何方式提高文件上传操作的安全性和性能吗?

谢谢

4

0 回答 0