Я получаю следующее исключение при реализации сервисов 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?
Я не получаю с osgi-кешем, я не нашел ничего подобного, но вместо этого он работает :-) – Krystian
Папка 'felix' под' osgi-cache', которая содержит несколько пакетов, обычно требуется, чтобы очистить, когда мы вносим некоторые изменения в модули на сервере, чтобы отразить эти изменения (папка 'felix' обычно находится в (относительно окон, как это выглядит полный путь) -' C: \ Program Files \ glassfish-4.1 \ GlassFish \ домены \ domain1 \ OSGi-cache'. Я не устанавливаю GlassFish в «Program Files», так как он требует прав администратора). Папка 'felix' автоматически создается при запуске/перезапуске сервера. – Tiny
Обычно я также удаляю папку 'сгенерированная ', обычно расположенную в' C: \ Program Files \ glassfish-4.1 \ glassfish \ domains \ domain1 \ generated' (на окнах), которая иногда может вводить некоторые несовместимости между модулями. – Tiny