2012-05-07 5 views
0

Я создаю Джерси-Grizzy-Server, который отлично работает на Win7. Но после того, как начиная с Linux я получаю странное, repeting Exception ВСЕГДАДжерси Grizzly успокаивающий сервер бросает странное URISyntaxException в Linux

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

, даже если ничего не звонит сервер. Службы отдыха всегда работают. У кого-то появилась идея, почему это исключение возникает или как начать с отладки grizzly2 Httpserver?

Сервер 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); 

Журнал с Exception:

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

Не удалось заставить Джерси-регистратор работать. И там я вижу, откуда вызывается мой сервер. Похоже, что обратный сервер звонит в порт: 9960, а не на 443. – mbue

ответ

0

Источник от проблемы был Конфиг в ReversProxys Healthcheck который имел следующие Отправить Строка

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

Мы должны были исправить Получить запрос на

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" действительно действительное значение здесь?

Проверьте вывод команд hostname и domainname; они должны возвращать полезные значения (domainname не так критичен, но лучше, если у него есть полезное значение).

Также смотрите ответ, как определить IP-адрес себя: How to get the ip of the computer on linux through Java?

[EDIT] Вы, вероятно, глядя в неправильном месте в коде. Задайте точку останова в конструкторе URISyntaxException и узнайте, откуда появился сломанный URI.

+0

Джерси-завод назначает его из URI u: final String host = (u.getHost() == null)? NetworkListener.DEFAULT_NETWORK_HOST: u.getHost(); с постоянной строкой DEFAULT_NETWORK_HOST = "0.0.0.0" Но тот же выпуск с 2-мя прослушивателями сети 1 для localhost, а другой для IP-сервера. – mbue

+0

Ах. Код, который вы отправили, предназначен для настройки Jersy. Но эта часть работает, как вы можете видеть в журнале (порт = 9660). Вам нужно проверить код, который создает URL-адреса для доступа к SSL (код, где порт 443). –

+0

Сервер работает. На порту 443 нет сетевого администратора. Откуда идет этот запрос? netstat -apl | grep 443 unix 2 [ACC] STREAM LISTENING 27443 - private/scache – mbue

Смежные вопросы