簡體   English   中英

數據庫連接我與 EJB 和 JSP 錯誤與 GlassFish Server

[英]Database Connectivity my with EJB and JSP Error with GlassFish Server

我是 Java EE 開發的新手。 我創建了一個新的企業應用程序項目,其中包含兩個模塊; TestDbEJB 和 TestDbWeb。

在 TestDbEJB 中,我創建了一個包含 Book 和 BookManager 兩個類的包 book。 以下代碼如下:

package book;
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Book {

    private int isbn;
    private String title;

    @Id
    public int getIsbn() {
        return isbn;
    }

    public void setIsbn(int isbn) {
        this.isbn = isbn;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }

}

圖書管理器

 package book;
 import java.sql.*;
 import java.util.ArrayList;
 public class BookManager {

String url = "jdbc:mysql://localhost:3306/Esd";
String user = "root";
String password = "root";

public int createBook(int isbn, String title) throws SQLException, ClassNotFoundException{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url, user, password);

String insert = "INSERT INTO book VALUES (?,?)";
PreparedStatement ptt = con.prepareStatement(insert);
ptt.setInt(1, isbn);
ptt.setString(2, title);

int ins = ptt.executeUpdate();

con.close();
ptt.close();

return ins;
}

  public ArrayList<Book> getAllBooks() throws SQLException,     ClassNotFoundException{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url, user, password);

String sqlSelect = "SELECT * from book";
Statement stt = con.createStatement();
ResultSet rs = stt.executeQuery(sqlSelect);
ArrayList<Book> Books = new ArrayList<Book>();

while(rs.next()){
    int isbn = rs.getInt("isbn");
    String title = rs.getString("title");
    Book b1 = new Book();
    b1.setIsbn(isbn);
    b1.setTitle(title);
    Books.add(b1);
}

con.close();
stt.close();
rs.close();

return Books;
 }

}

現在在我的 TestDbWeb 中,我創建了一個 JSP 文件 - addBook.jsp。

添加Book.jsp

        <jsp:useBean id = "bm" class="book.BookManager" scope="session"/>

    <%
    try{
        int isbn = Integer.parseInt(request.getParameter("isbn"));
        String title = request.getParameter("title");

        bm.createBook(isbn, title);
    }catch(Exception e){

    }

    %>

    <h1> Welcome to ABC Library</h1>

    <form>
    <table>
        <tr>
            <td> Enter Details </td>
            <td><input type="text" name="isbn"></td>
            <td><input type="text" name="isbn"></td>
            <td><input type="submit" name="add" value="add"></td>
    </tr>
    </table>
</form> 

現在真正的問題是,當我運行應用程序時,會顯示一個對話框,其中包含以下錯誤:

無法部署 TestDb 部署失敗=部署期間發生錯誤:部署應用程序時出現異常 [TestDb]:無效的 ejb jar [TestDbEJB.jar]:它包含零個 ejb。

筆記:

  1. 一個有效的 ejb jar 至少需要一個會話、實體(1.x/2.x 樣式)或消息驅動 bean。

  2. EJB3 實體 bean (@Entity) 是 POJO,請將它們打包為庫 jar。

  3. 如果 jar 文件包含使用 EJB 組件級批注(@Stateless、@Stateful、@MessageDriven、@Singleton)進行批注的有效 EJB,請檢查 server.log 以查看批注是否被正確處理。請參閱 server.log更多細節。

出現此錯誤:無法部署 TestDb 部署失敗=未部署名稱為 [TestDb] 的應用程序

另請注意,以前未顯示上述錯誤時。 但是在我的瀏覽器上,我收到錯誤“未找到資源”

您的幫助將不勝感激。 由於我在谷歌上的搜索並沒有幫助我自己解決這個問題。 感謝和問候..

您無法訪問您的應用程序,因為它尚未部署到 Glassfish。 並且您的 TestDbEJB 不包含 EJB bean,Glassfish 拒絕將其識別為 EJB 模塊。 你為什么不嘗試用@Stateless 來注釋你的 BookManager.java?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM