Java WS文件上传服务

时间:2012-09-21 10:05:58

标签: soap wsdl wsdl2java java-ws

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

谢谢

0 个答案:

没有答案