0
我有一個運行在tomcat 7和MYSQL上的可用的java 7應用程序。我試圖讓它在Amazon AWS提供的基本(免費層)平臺上運行。我已成功將數據加載到MYSQL社區的RDS實例,並設置了基本JSP正常運行的Elastic Beanstalk實例。Tomcat和MYSQL移植到AWS
我是AWS新手,所以主要問題應該是我缺乏知識。
我無法從我的代碼連接到數據庫。
這是我用來創建連接池代碼:
package com.authz.pap;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class DBConnections {
private static DataSource dataSource;
private static final DBConnections instance = new DBConnections();
static
{
try
{
Context c = new InitialContext();
dataSource = (DataSource)c.lookup("java:comp/env/jdbc/authzDB");
}
catch (Exception e)
{
dataSource = null;
}
}
private DBConnections()
{
}
public static DBConnections getInstance()
{
return instance;
}
public static DataSource getGeoServDS() {
//if(dataSource==null) instance = new DBConnections();
return dataSource;
}
}
這:
public DbCon() {
conn=null;
ProcessStatus stat = new ProcessStatus();
stat.function="DbCon.DbCon";
stat.message = "Initializing DB";
stat.retcode=0;
stat.record();
try {
conn=DBConnections.getGeoServDS().getConnection();
conn.setAutoCommit(false);
} catch (Exception e) {
stat.message = e.toString();
stat.retcode=-1;
stat.record();
}
}
這是context.xml文件的內容:
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/rest">
<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="8" maxIdle="4" name="jdbc/authzDB" password="xxxx" type="javax.sql.DataSource" url="jdbc:mysql://x.x.x.x:3306/authzDB?autoReconnect=true&allowMultiQueries=true" username="root"/>
<ResourceLink global="jdbc/authzDB" name="jdbc/authzDB" type="javax.sql.DataSource"/>
</Context>
我得到的是關於數據庫初始化的java.lang.NullPointerException
。
我在做什麼錯?
UPDATE:
這是web.xml文件的內容:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" id="WebApp_ID" version="2.5">
<display-name>paprest</display-name>
<servlet>
<servlet-name>PAP rest interface</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.authz.pap.intfc</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>rest interface</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
你的web.xml文件中是否有resource-ref? –
不可以。我應該放什麼? – jordi
servlet映射後需要添加以下配置 <資源引用> DB連接描述> JDBC/authzDB RES-REF-名稱> javax.sql.DataSource中 容器 resource-ref> –