如何将JDBC驱动程序链接到缺少WEB-INF文件夹的EJB项目

我在Neon Eclipse中有Enterprise Appilcation Solution,它包含EJB和Servlet项目并部署到Wildfly 10服务器。
Servlet为访问DB调用EJB。
如果我把JDBC驱动程序放在Servlet项目的WEB-INF文件夹中,一切进展顺利,但如果我将代码移到EJB并将驱动程序作为外部JAR链接(见截图),我会收到错误:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from [Module "deployment.NeoflexBank.ear.Neoflex.jar:main" from Service Module Loader] 

这是我用来访问DB的代码:

  public String test() { String output = ""; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); } catch (Exception e) { e.printStackTrace(); } String url="jdbc:mysql://localhost:3306/neoflex"; String username="root"; String password=""; String query="select * from clients"; Connection conn; try { conn = (Connection) DriverManager.getConnection(url, username, password); Statement stmt = (Statement) conn.createStatement(); ResultSet rs = stmt.executeQuery(query); while(rs.next()) { output += rs.getInt("id"); output += rs.getString("username"); output += rs.getString("birth_date"); output += rs.getString("name"); output += rs.getString("surename"); } } catch (SQLException e) { // TODO Auto-generated catch block return e.toString(); } return output; } 

关于JDBC链接的麻烦

在Java EE服务器中执行此操作的方法是定义DataSource,然后使用它来获取JDBC连接:

  1. 将mysql-connector-java-5.1.40-bin.jar移动到WildFly安装的standalone\deployments目录中。

  2. 启动WildFly服务器并在http:// localhost:9990打开管理控制台。 您可能必须按照一些说明在此处设置一些安全性。

  3. 单击“ Configuration选项卡,然后单击:

    一个。 子系统

    湾 数据源

    C。 非XA

  4. 单击蓝色的“ Add按钮并按照提示进行操作。

现在,EJB中的代码看起来有点像:

 @Stateless public class SomeEJB { @Resource(name="java:/MySqlDS") private DataSource ds; public String test() { String output = ""; String query="select * from clients"; try { try (Connection conn = ds.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(query)) { while(rs.next()) { output += rs.getInt("id"); output += rs.getString("username"); output += rs.getString("birth_date"); output += rs.getString("name"); output += rs.getString("surename"); } } } catch (SQLException e) { return e.toString(); } return output; } } 

这会将您的应用程序与数据库配置分离。 DataSource配置也可以从命令行脚本完成。