2

Java 7u21 以降、私が作成した JavaFX アプレットで奇妙な動作に出くわしました。

サーバー側には、Glassfish 3 サーバーと mysql データベースがあります。クライアント側では、Glassfish サーバーにリクエストを送信することで、Jersey を使用してデータベースからデータをフェッチします。JAR ファイルを介してプログラムを起動するとすべてが機能しますが、JNLP ファイルを介して起動すると、7u21 以降の奇妙な動作に気付きました。お見せしましょう:

XML 応答を返す単純な要求を行います。

メソッド(クライアント):

public List<Users> getUsersHierarchyTreeFilteredByUserlevel(int id, int betweenStart, int betweenEnd) throws UniformInterfaceException {
    WebResource resource = webResource;
    resource = resource.path(java.text.MessageFormat.format("users/{0}/hierarchy", String.valueOf(id))).queryParam("start", "" + String.valueOf(betweenStart)).queryParam("end", "" + String.valueOf(betweenEnd));
    System.out.println(resource.getURI());
    return resource.accept(javax.ws.rs.core.MediaType.APPLICATION_XML).get(new GenericType<List<Users>>() {});
}

URI : System.out.println(resource.getURI());

http://localhost:8080/myWS/webresources/entities.users/users/4/hierarchy?start=5&end=5

Java コンソール:

network: Cache entry not found [url: http://localhost:8080/myWS/webresources/entities.users/users/4/hierarchy?start=5&end=5, version: null]
network: Connecting http://localhost:8080/myWS/webresources/entities.users/users/4/hierarchy?start=5&end=5 with proxy=DIRECT
network: Connecting socket://localhost:8080 with proxy=DIRECT
network: Downloading resource: http://localhost:8080/myWS/webresources/entities.users/users/4/hierarchy?start=5&end=5
Content-Length: -1
Content-Encoding: null
network: Wrote URL http://localhost:8080/myWS/webresources/entities.users/users/4/hierarchy?start=5&end=5 to File C:\Users\Steven\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\33\d7edc21-130fad10-temp
cache: Adding MemoryCache entry: http://localhost:8080/myWS/webresources/entities.users/users/4/hierarchy
java.io.IOException: stream is closed

ご覧のとおり、IOException を受け取ります。これはgetUsersHierarchyTreeFilteredByUserlevel(...)メソッドのresource.accept(...)で発生するようです。しかし、ブラウザに URI を貼り付けると、正しい XML データが表示されますか? 理由はわかりません... JAR自体または7u17を実行しているときに機能します。

何か案は?前もって感謝します!

更新 * wget (64bit) でフェッチ*

D:\>WGET64.EXE -S --http-user=*** --http-passwd=*** "http://localhost:8080/myWS/webresources/entities.users/users/4/hierarchy?start=5&end=5"
--22:06:53--  http://localhost:8080/myWS/webresources/entities.users/users/4/hierarchy?start=5&end=5
       => `hierarchy@start=5&end=5'
Resolving localhost... 127.0.0.1
Connecting to localhost[127.0.0.1]:8080... connected.
HTTP request sent, awaiting response...
 1 HTTP/1.1 200 OK
 2 X-Powered-By: Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1.2.2 Java/Oracle Corporation/1.7)
 3 Server: GlassFish Server Open Source Edition 3.1.2.2
 4 Pragma: No-cache
 5 Cache-Control: no-cache
 6 Expires: Thu, 01 Jan 1970 01:00:00 CET
 7 Content-Type: application/xml
 8 Date: Wed, 05 Jun 2013 20:06:53 GMT
 9 Connection: close

    [ <=>                                 ] 9,610         --.--K/s

22:06:53 (9.16 MB/s) - `hierarchy@start=5&end=5' saved [9610]
4

1 に答える 1