Спокойный с EJB

Я хочу создать приложение Restful с помощью ejb, поэтому я создаю db.jar и restful.war.

В db.jar у меня есть:

@Remote public interface DBManagerRemote

А в restful.war у меня есть:

 @EJB private DBManagerRemote manager;

Но когда я развертываюсь в Glassfish, я получаю исключение:

org.jboss.resteasy.spi.UnhandledException: java.lang.NullPointerException

Что я делаю неправильно?

web.xml:

<web-app xmlns = "http://java.sun.com/xml/ns/javaee"
         xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version = "3.0">
    <display-name>Restful Web Application</display-name>

    <context-param>
        <param-name>resteasy.scan</param-name>
        <param-value>true</param-value>
    </context-param>

    <listener>
        <listener-class>
            org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
    </listener>

    <servlet>
        <servlet-name>resteasy-servlet</servlet-name>
        <servlet-class>
            org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>resteasy-servlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

persistence.xml в db.jar:

<?xml version = "1.0" encoding = "UTF-8"?>

<persistence version = "2.0" xmlns = "http://java.sun.com/xml/ns/persistence"
             xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation = "http://java.sun.com/xml/ns/persistence
   http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

    <persistence-unit name = "simpleFactory" transaction-type = "JTA">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <jta-data-source>source_name</jta-data-source>
        <class>Mybean</class>
    </persistence-unit>
</persistence>

Слишком мало информации, чтобы определить, в чем проблема. где возникает исключение? в каком отдыхе-сервисе? как вы определили конечную точку отдыха? трассировка исключений и т. д.

maress 29.05.2018 10:40
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
36
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы получаете исключение NullPointerException, потому что пытаетесь использовать инъекцию контейнера в приложении REST, которое использует RestEasy в GlassFish.

RestEasy не интегрирован со GlassFish, поэтому инъекции никогда не произойдет.

Самое простое решение для вас:

  1. удалите все рестайлинговые баночки, которые есть в вашем приложении
  2. полностью удалить web.xml
  3. добавьте стандартный код начальной загрузки JAX-RS в свое веб-приложение:

    @ApplicationPath("/")
    public class JAXRSConfiguration extends Application {
    }
    

Затем будет использоваться реализация JAX-RS, встроенная в GlassFish.

Другие вопросы по теме