2

我正在使用 MTOM 通过 WebService 将某些文件的内容流式传输到客户端。

前端调用后端服务器上的 WS 并将文件流式传输到客户端。

然而,该应用程序是一个 Java EE 环境(WebLogic),据我所知,这是不允许的(或被认为是创建新线程的好做法),但 MTOM 使用的 DataHandler 的代码可以做到这一点:

   // there is none but the default^^^^^^^^^^^^^^^^
  252               final DataContentHandler fdch = dch;
  253   
  254               // from bill s.
  255               // ce n'est pas une pipe!
  256               //
  257               // NOTE: This block of code needs to throw exceptions, but
  258               // can't because it is in another thread!!! ARG!
  259               //
  260               final PipedOutputStream pos = new PipedOutputStream();
  261               PipedInputStream pin = new PipedInputStream(pos);
  262               new Thread(
  263                          new Runnable() {
  264                   public void run() {
  265                       try {
  266                           fdch.writeTo(object, objectMimeType, pos);
  267                       } catch (IOException e) {
  268   
  269                       } finally {
  270                           try {
  271                               pos.close();
  272                           } catch (IOException ie) { }
  273                       }
  274                   }
  275               },
  276                         "DataHandler.getInputStream").start();
  277               ins = pin;

http://www.docjar.org/html/api/javax/activation/DataHandler.java.html http://docs.oracle.com/javaee/1.4/api/javax/activation/DataHandler.html

那么在 Java EE 中使用 MTOM 和流安全吗?容器不创建新线程这一事实可能根本不危险?

4

0 回答 0