数据库连接与EJB和JSP错误与GlassFish服务器



我是Java EE开发的新手。我创建了一个新的企业应用项目,它包含两个模块:testdbjb和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;
    }
}

BookManager.java

 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。

addBook.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]: Invalid ejb jar [TestDbEJB.jar]:它包含0个ejb.

注意:

  1. 一个有效的ejb jar至少需要一个会话,entity (1.x/2)。X样式),或者消息驱动bean。

  2. EJB3实体bean (@Entity)是pojo,请将它们打包为库jar。

  3. 如果jar文件包含有效的EJB,这些EJB用EJB组件级别的注释进行了注释(@Stateless, @Stateful, @MessageDriven, @Singleton),请检查server.log以查看注释是否被正确处理。

此错误出现:无法部署TestDb

应用程序名称[TestDb]未部署

还请注意,前面没有显示上述错误。但是在我的浏览器上,我得到错误"资源未找到"

非常感谢您的帮助。因为我在谷歌上搜索并没有帮助我自己解决这个问题。谢谢,问候. .

你无法访问你的应用程序,因为它还没有部署到Glassfish。并且testdbjb不包含EJB bean, Glassfish拒绝将其识别为EJB模块。为什么不尝试用@Stateless注释你的BookManager.java呢?

最新更新