0

Win7 で正常に動作する Jersey-Grizzy-Server を作成します。しかし、Linux を起動した後、奇妙な、常に繰り返される例外が発生します。

java.lang.IllegalArgumentException: java.net.URISyntaxException: Expected hostname at index 8: https://:443/

、サーバーを呼び出しているものがない場合でも。残りのサービスは常に機能しています。この例外が発生する理由、または grizzly2 Httpserver のデバッグを開始する方法について、誰かが考えを持っていましたか?

Server Start は次のように実装されます (簡略化)。

boolean https = true;
int port = 9960;
URI baseURI = UriBuilder.fromUri("http" + (https ? "s" : "") + "://0.0.0.0/").port(port).build();

//Jersey Service Config
final ResourceConfig rc = new UriExtensionsConfig(GcardApplication.getConfigPackages());

// create Grizzly Container
final HttpHandler handler = ContainerFactory.createContainer(HttpHandler.class, rc);

//do the ssl Config
SLEngineConfigurator ssl = configSSL(https);

HttpServer server = GrizzlyServerFactory.createHttpServer(baseURI, handler, https, ssl);

例外のあるログ:

INFO: Initiating Jersey application, version 'Jersey: 1.11 12/09/2011 10:27 AM'
May 7, 2012 8:20:45 PM org.glassfish.grizzly.http.server.NetworkListener start
INFO: Started listener bound to [0.0.0.0:9960]
May 7, 2012 8:20:45 PM org.glassfish.grizzly.http.server.HttpServer start
INFO: [HttpServer] Started.
Crm WS Server started at https://localhost:9960/

Hit Ctrl C to stop the server ...
May 7, 2012 8:20:46 PM org.glassfish.grizzly.http.server.HttpHandler doHandle
SEVERE: service exception
java.lang.IllegalArgumentException: java.net.URISyntaxException: Expected hostname at index 8: https://:443/
    at com.sun.jersey.server.impl.container.grizzly2.GrizzlyContainer.getBaseUri(GrizzlyContainer.java:226)
    at com.sun.jersey.server.impl.container.grizzly2.GrizzlyContainer._service(GrizzlyContainer.java:195)
    at com.sun.jersey.server.impl.container.grizzly2.GrizzlyContainer.service(GrizzlyContainer.java:185)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:163)
    at org.glassfish.grizzly.http.server.HttpHandlerChain.service(HttpHandlerChain.java:195)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:163)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:158)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:286)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:223)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:155)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:134)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:78)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:827)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:103)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:111)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:131)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:508)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:488)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.net.URISyntaxException: Expected hostname at index 8: https://:443/
    at java.net.URI$Parser.fail(URI.java:2810)
    at java.net.URI$Parser.failExpecting(URI.java:2816)
    at java.net.URI$Parser.parseHostname(URI.java:3352)
    at java.net.URI$Parser.parseServer(URI.java:3198)
    at java.net.URI$Parser.parseAuthority(URI.java:3117)
    at java.net.URI$Parser.parseHierarchical(URI.java:3059)
    at java.net.URI$Parser.parse(URI.java:3015)
    at java.net.URI.<init>(URI.java:662)
    at com.sun.jersey.server.impl.container.grizzly2.GrizzlyContainer.getBaseUri(GrizzlyContainer.java:223)
    ... 20 more
May 7, 2012 8:20:49 PM org.glassfish.grizzly.http.server.HttpHandler doHandle
SEVERE: service exception
java.lang.IllegalArgumentException: java.net.URISyntaxException: Expected hostname at index 8: https://:443/
    at com.sun.jersey.server.impl.container.grizzly2.GrizzlyContainer.getBaseUri(GrizzlyContainer.java:226)
    at com.sun.jersey.server.impl.container.grizzly2.GrizzlyContainer._service(GrizzlyContainer.java:195)
    at com.sun.jersey.server.impl.container.grizzly2.GrizzlyContainer.service(GrizzlyContainer.java:185)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:163)
    at org.glassfish.grizzly.http.server.HttpHandlerChain.service(HttpHandlerChain.java:195)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:163)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:158)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:286)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:223)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:155)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:134)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:78)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:827)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:103)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:111)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:131)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:508)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:488)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.net.URISyntaxException: Expected hostname at index 8: https://:443/
    at java.net.URI$Parser.fail(URI.java:2810)
    at java.net.URI$Parser.failExpecting(URI.java:2816)
    at java.net.URI$Parser.parseHostname(URI.java:3352)
    at java.net.URI$Parser.parseServer(URI.java:3198)
    at java.net.URI$Parser.parseAuthority(URI.java:3117)
    at java.net.URI$Parser.parseHierarchical(URI.java:3059)
    at java.net.URI$Parser.parse(URI.java:3015)
    at java.net.URI.<init>(URI.java:662)
    at com.sun.jersey.server.impl.container.grizzly2.GrizzlyContainer.getBaseUri(GrizzlyContainer.java:223)
    ... 
4

2 に答える 2

0

問題の原因は、次の送信文字列を持つ ReversProxys ヘルスチェックの構成でした。

GET / HTTP/1.1\r\nHost: \r\nConnection: close\r\n\r\n

Get Request を次のように修正する必要がありました。

GET https://servername:9960/ HTTP/1.1\r\nHost: originalservername\r\nConnection: close\r\n\r\n
于 2012-05-09T08:53:17.023 に答える
0

https://:443/は有効な URL ではありません - ホスト名がありません。

あなたのコードから、あなたが電話していることがわかりますUriBuilder.fromUri("https://0.0.0.0/")

"0.0.0.0"ここで本当に有効な値ですか?

コマンドhostnamedomainname;の出力を確認します。それらは有用な値を返す必要があります(domainnameそれほど重要ではありませんが、有用な値があればより良いです)。

また、この回答を参照してください。自分の IP アドレスを特定する方法: How to get the ip of the computer on linux through Java?

[編集]おそらくコードの間違った場所を見ているでしょう。のコンストラクターにブレークポイントを設定しURISyntaxException、壊れた URI がどこから来ているかを調べます。

于 2012-05-08T10:36:39.317 に答える