現在、Java Web サービス プロジェクトに取り組んでいます。これは Apache Tomcat 7 サーバーにデプロイされており、ファイルをサーバーにアップロードするためのサービスを提供する必要があります。また、Web サービスは、Java を使用しない可能性のあるシステムでも使用できる必要があります。したがって、Web サービスをすべてのクライアント (つまり、C#、php など) で普遍的に利用できるようにする必要があります。Web を閲覧した後、多くの解決策を見つけましたが、前述の基準を満たす方法を説明しているものはありません。より具体的に言うと、Java の DataHandler など、広く受け入れられているデータ構造を指定するために不可欠であると参照されている MTOM および Java WS Annotations に出くわしました。私の 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 サービス インターフェイスは次のようになります。
@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 オブジェクトが正しいタイプになることをどのように保証するかということです。また、ファイルのアップロード操作のセキュリティとパフォーマンスを向上させる方法はありますか?
ありがとうございました