EntityManager null и внедрение EJB / CDI не работают - Weblogic 12.2.1.2, JavaEE7, EclipseLink - PullRequest
0 голосов
/ 12 сентября 2018

Привет всем, и спасибо, что нашли время посмотреть на мою проблему.

Я все еще начинающий разработчик, и я пытаюсь пройти несколько уроков по созданию простого приложения JavaEE7, которое использует EclipseLinkкак поставщик постоянства и пытается включить EJB / CDI.

Среда:

  • WebLogic 12.2.1.2
  • База данных Oracle XE (11 г)
  • EclipseLink 2.6.4
  • JavaEE7

Проблема, с которой я сталкиваюсь:

  1. Мой EntityManager не внедряется и имеет нулевое значение (в MyAppService.java).

  2. Попытка внедрить EJB или CDI не работает, и мне приходится создавать экземпляры классов с помощью команды "new".

Я пытался сделатьэтот пример настолько прост, насколько это возможно, и я не понимаю, почему это не работает.

persistence.xml

  <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="2.1"
        xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
        <persistence-unit name="myApp" transaction-type="JTA">
            <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
            <jta-data-source>MyAppsDataSource</jta-data-source>
        </persistence-unit>
    </persistence>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
  <display-name>MyApp</display-name>

  <context-param>
    <param-name>javax.faces.CONFIG_FILES</param-name>
    <param-value>/WEB-INF/faces-config.xml</param-value>
  </context-param>

  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
  <context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
  </context-param>
</web-app>

лица-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
    version="2.2">
</faces-config>

MyBean.java

package com.example.myapp;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean(name = "bookBean")
@RequestScoped
public class BookBean{

    private Book book;

    private int bookId;

    private String name;


    @EJB
    private MyAppService myAppService;

/* getters and setters all go here */

public void addBook(){

    book = new Book();

    book.setName(name);

    myAppService = new MyAppService ();

    myAppService.addBook(book);
}

myAppService.java

package  com.example.myapp;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import  com.example.myapp.Book;

@Stateless
public class MyAppService {


    @PersistenceContext
    private EntityManager em;



    public MyAppService(){

    }

    public void addBook(Book book){

        em.persist(book);

    }
}

Book.java

package com.example.myapp;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "book")
public class Book implements Serializable {
    static final long serialVersionUID = 5423333547663264823L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int bookId;

    private String name;

    public Book() {
    }

    public int getBookId() {
        return bookId;
    }

    public void setBookId(int bookId) {
        this.bookId = bookId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name= name;
    }
}

ЕслиВы хотите любую другую информацию, пожалуйста, дайте мне знать!

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...