2014-11-12 4 views
4

Я получаю следующее исключение при реализации сервисов JAX-WS в Java EE 7.java.lang.NullPointerException at org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:272) при доступе к сервисам JAX-WS

Warning: Internal Server error: /Test-war/Test.xhtml 
java.lang.NullPointerException 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:272) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) 
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201) 
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175) 
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) 
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) 
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561) 
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545) 
    at java.lang.Thread.run(Thread.java:745) 

Сообщение об исключении представляется очень специфичным для GlassFish Server (я использую 4.1).


Тест сценарий:

КДИ управляемый компонент:

@Named 
@ViewScoped  
public class TestManagedBean implements Serializable 
{ 
    private String test; 
    private static final long serialVersionUID=1L; 

    public TestManagedBean() {} 

    @PostConstruct 
    private void init() { 
     TestBean_Service testBean_Service=new TestBean_Service(); 
     TestBean testBean = testBean_Service.getTestBeanPort(); 
     System.out.println("testBean sum = "+testBean.getSum(5, 10)); 
    } 

    public String getTest() { 
     return test; 
    } 
} 

Переменная член test является просто бесполезно. Он берется только для целей тестирования.

В XHTML странице, просто этот test поле, как это так,

<h:outputText value="#{testManagedBean.test}"/> 

так, что метод бина отмечен @PostConstruct может быть вызван.

Исключение возникает при вводе соответствующего URL-адреса в адресную строку браузера.


testBean.getSum(int, int) является методом удаленного EJB, который успешно вызывается, когда боб изменяется на одноточечный EJB только по причинам тестирования, как так,

import client.web.services.TestBean; 
import client.web.services.TestBean_Service; 
import javax.annotation.PostConstruct; 
import javax.ejb.Singleton; 
import javax.ejb.Startup; 
import javax.ejb.TransactionAttribute; 
import javax.ejb.TransactionAttributeType; 

@Startup 
@Singleton 
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) 
public class TestManagedBean 
{ 
    public TestManagedBean() {} 

    @PostConstruct 
    private void init() { 
     TestBean_Service testBean_Service=new TestBean_Service(); 
     TestBean testBean = testBean_Service.getTestBeanPort(); 
     System.out.println("testBean sum = "+testBean.getSum(5, 10)); 
    } 
} 

В этом случае прокси метод getSum(int, int), который фактически доступен в ассоциированном удаленном EJB, успешно вызывается и возвращает сумму двух параметров, предоставленных через него.

Что делает GlassFish думать о java.lang.NullPointerException, когда услуга доступна через страницу XHTML?

ответ

9

Это ошибка в GlassFish 4.1, влияющая на компонент grizzly-kernel на сервере - встроенный сервер GlassFish Grizzly, обслуживающий HTTP-запросы. Это требует замены файла jar файла nucleus-grizzly-all.jar на сервере GlassFish (4.1), как предложено here под номером ${glassfishHome}/glassfish/modules (не забудьте очистить osgi-cache под номером #{glassfishHome}/glassfish/domains/yourDomain перед запуском/перезапуском сервера).

Я посетил эту ссылку до этого поста, но ее статус был «разрешен» согласно GlassFish Server 4.1, что заставило меня подумать о чем-то другом.

Обратите внимание: кто-то уже отправил один и тот же ответ несколько часов назад, но ответ был удален, возможно, доверенными пользователями, рассматривая ответ только для ссылок. Несмотря на то, что это ответ только для ссылок, но в этом случае нет возможности обойти проблему, кроме замены новой банки на сервере, и даже банку предоставили после того, как этот вопрос был задан 19 ноября 2014 года Я надеюсь, что этот ответ не будет удален.

+0

Я не получаю с osgi-кешем, я не нашел ничего подобного, но вместо этого он работает :-) – Krystian

+0

Папка 'felix' под' osgi-cache', которая содержит несколько пакетов, обычно требуется, чтобы очистить, когда мы вносим некоторые изменения в модули на сервере, чтобы отразить эти изменения (папка 'felix' обычно находится в (относительно окон, как это выглядит полный путь) -' C: \ Program Files \ glassfish-4.1 \ GlassFish \ домены \ domain1 \ OSGi-cache'. Я не устанавливаю GlassFish в «Program Files», так как он требует прав администратора). Папка 'felix' автоматически создается при запуске/перезапуске сервера. – Tiny

+0

Обычно я также удаляю папку 'сгенерированная ', обычно расположенную в' C: \ Program Files \ glassfish-4.1 \ glassfish \ domains \ domain1 \ generated' (на окнах), которая иногда может вводить некоторые несовместимости между модулями. – Tiny

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

  • Нет связанных вопросов^_^