Arect和他的

Wildfly+JSP+MySQL

学校的“软构件与中间件”课程需要用到JBoss7和数据库,可是这都1202年了,人家JBoss都改完名字出到23了,我怎么能和他们一样停留在旧时代呢?然后我自以为是地部署了Wildfly23,打开IDEA新建了一个demo项目,点击运行,不错,Hello, world。结果Servlet直接404……

当头一棒,让我研究了一下午,搜尽各种论坛,原来是缺少驱动。在IDEA的文件菜单里打开项目结构,添加库,找到Wildfly目录里面的Servlet的API,添加进去之后就可以使用Servlet了。

老师让我们连接数据库做个登录界面,这个简单啊,看我随便连个数据库查询一下,啪,statnull,我???这个我又查了一下午没成功,后来终于找到了(MySQL):

下载JDBC驱动,在$WILDFLY_HOME/modules/system/layers/base/com下创建目录mysql/main,将驱动复制进来,然后新建文件module.xml,内容:

<?xml version="1.0" encoding="UTF-8"?>
<module name="com.mysql" xmlns="urn:jboss:module:1.9">
    <resources>
        <resource-root path="[你下载的驱动文件名]"/>
    </resources>

    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>

第二行xmlns="urn:jboss:module:1.9"版本号参考其它目录,不同Wildfly版本不一定一样。

随后编辑Wildfly目录下的standalone\configuration\standalone.xml,在drivers标签下添加如下:

<driver name="mysql" module="com.mysql">
    <driver-class>com.mysql.cj.jdbc.Driver</driver-class>
    <xa-datasource-class>com.mysql.cj.jdbc.MysqlXADataSource</xa-datasource-class>
</driver>

(其实drivers标签在datasource标签内)在datasource标签内添加数据源:

<datasource jndi-name="java:/[自定义名字]" pool-name="MySqlDS">
    <connection-url>jdbc:mysql://[数据库链接]/[数据库名]</connection-url>
    <driver-class>com.mysql.cj.jdbc.Driver</driver-class>
     <driver>mysql</driver>
    <security>
        <user-name>[用户名]</user-name>
        <password>[密码]</password>
    </security>
    <validation>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
        <validate-on-match>true</validate-on-match>
        <background-validation>false</background-validation>
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
    </validation>
</datasource>

将上面的中文和方括号改成自己的就可以。

接下来在JSP中,获取Connection的方法稍微改了一下,例如:

Context c = new InitialContext();
DataSource d = (DataSource) c.lookup("java:/[你的自定义名字]");
Connection conn = d.getConnection();
Statement stat = conn.createStatement();

这样就可以了……

后来才发现这是JNDI的一部分……

2021-4-15更

INSPI

文章作者

发表评论

textsms
account_circle
email

Arect和他的

Wildfly+JSP+MySQL
学校的“软构件与中间件”课程需要用到JBoss7和数据库,可是这都1202年了,人家JBoss都改完名字出到23了,我怎么能和他们一样停留在旧时代呢?然后我自以为是地部署了Wildfly23,打开IDEA新…
扫描二维码继续阅读
2021-04-10