今天用皕杰报表的时候,新配了一个mysql数据源,然后开始启动tomcat,出现了闪退现象。一般出现闪退都是环境变量没有配好,但我知道我的电脑里环境变量是没问题的,问题肯定出在刚才配置的数据源上,于是打开server.xml和report-config.xml,仔细看了一下,没发现问题。怎么办呢?
当然要看tomcat的日志,应该有所提示。于是打开了catalinna.log文件,仔细查找有错误的地方。看到了如下错误:
07-May-2022 14:55:14.859 严重 [main] org.apache.tomcat.util.digester.Digester.fatalError 分析第[184]行第[9]列处的致命错误
org.xml.sax.SAXParseException;systemId: file:/D:/BiosPlatformVersionfile/BiosPlatform4Win-V6.1-B20220506/BIOS Server/conf/server.xml; lineNumber: 184; columnNumber: 9; 元素类型 "Context" 必须由匹配的结束标记 "</Context>" 终止。
看明白了吧,原来在server.xml里配置连接池的时候丢掉了</Context>,在配置文件里加上</Context>后,再次启动一切ok了。
这说明了什么问题呢?当然是不够细心,随意丢掉了程序的结束标记,tomcat当然就不能正常启动了。不能正常启动也不要慌,到tomcat日志里去发现问题,解决了就好。
下面给出的是皕杰报表配置mysql数据源的代码。
server.xml中配置数据库连接池代码如下:
<Context path="/iface" docBase="iface" reloadable="false">
<Resource name="MYSQL" auth="Container" type="javax.SQL.dataSource"
username="root"
password="123"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/test1"
maxActive="50"
maxIdle="5"
maxWait="3000" />
</Context>
127.0.0.1代表本机ip,不是本机就改成你的数据库服务器的ip。
report-config.xml中配置数据源代码如下:
<dataSource>
<Name>mysql</Name>
<JNDIPrefix>java:comp/env/</JNDIPrefix>
<JNDIName>MYSQL</JNDIName>
<DBType>mysql</DBType>
<DBEncode>gbk</DBEncode>
<SQLDecode>false</SQLDecode>
<Default>false</Default>
<SupportMVCC>true</SupportMVCC>
</dataSource>
当然还有一点,不要忘了把数据库的jdbc驱动放到tomcat的lib下。