2012-05-07 84 views
0

我創建了一個在Win7上運行良好的Jersey-Grizzy-Server。但在Linux上啓動後,我會得到一個奇怪的,總是重複例外澤西灰熊寧靜的服務器在Linux上引發奇怪的URISyntaxException

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

,即使沒有什麼是調用服務器。其餘的服務都是可以運作的。有人有一個想法,爲什麼這個異常升起,或如何開始調試grizzly2 Httpserver?

服務器啓動是這樣實現的(簡化):

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) 
    ... 
+0

你配置的環回地址(/etc/hosts,可能)在你的linux發行版中? –

+0

我們已經配置好了/ etc/hosts文件 127.0.0.1 localhost – mbue

+0

可以讓Jersey Logger工作。在那裏我可以看到我的服務器被調用的地方。它看起來像reverseeproxy調用端口:9960而不是443. – mbue

回答

0

來源斷問題是ReversProxys健康檢查的的配置具有下列發送字符串

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

我們必須糾正GET請求

GET https://servername:9960/ HTTP/1.1\r\nHost: originalservername\r\nConnection: close\r\n\r\n 
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來自哪裏。

+0

澤西島工廠從URI內部分配它: final String host =(u.getHost()== null)? NetworkListener.DEFAULT_NETWORK_HOST:u.getHost(); 與常量字符串DEFAULT_NETWORK_HOST =「0.0.0.0」 但同樣的issu與2網絡監聽器1爲本地主機,另一個爲服務器IP。 – mbue

+0

啊。您發佈的代碼是用於Jersy的設置。但是這部分工作正如你在日誌中看到的那樣(port = 9660)。您需要檢查爲SSL訪問創建URL的代碼(端口爲443的代碼)。 –

+0

服務器運行。在端口443上沒有networklistener。這個請求來自哪裏? netstat -apl | grep 443 unix 2 [ACC] STREAM LISTENING 27443 - private/scache – mbue