[英]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。
筆記:
一個有效的 ejb jar 至少需要一個會話、實體(1.x/2.x 樣式)或消息驅動 bean。
EJB3 實體 bean (@Entity) 是 POJO,請將它們打包為庫 jar。
如果 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.