我创建了一个OpenShift应用程序(Tomcat 7(JBoss EWS 2.0))并且在developercorey的帮助下,我能够将我的应用程序部署到OpenShift并连接到本地MySQL数据库OpenShift。连接到JBoss EWS 2.0中的本地MySQL数据库
我现在试图连接到只在本地机器上的同一个数据库,但是当我调用initialContext.lookup(“jdbc/local”)时会引发错误。它的行为就像无法找到context.xml文件,即使在OpenShift中部署应用程序时,它也能正常工作。
异常:javax.naming.NoInitialContextException:需要在环境或系统属性或applet参数中指定类名,或者在应用程序资源文件中指定类名:java.naming.factory.initialNeed指定环境中的类名或系统属性,或作为小程序参数,或在应用程序的资源文件:java.naming.factory.initial的 例外:java.lang.NullPointerExceptionnull
我用Tomcat和数据源的位置位于: WebContent \ META-INF \ context.xml
但是对于JBoss,context.xml位于: .openshift \ config \ context.xml
是否需要额外的映射才能使应用程序在本地连接?
在此先感谢!
private static DataSource getDataSource() {
DataSource datasource = null;
try {
InitialContext ic = new InitialContext();
Context initialContext = (Context) ic.lookup("java:comp/env");
datasource = (DataSource) initialContext.lookup("jdbc/local");
} catch (Exception ex) {
System.out.println("Exception: " + ex + ex.getMessage());
} finally {
return datasource;
}
}
<Resource name="jdbc/OpenShift"
url="jdbc:mysql://127.10.198.2:3306/remote"
driverClassName="com.mysql.jdbc.Driver"
username="root"
password="*****"
auth="Container"
type="javax.sql.DataSource"
maxActive="20"
maxIdle="5"
maxWait="10000"
/>
<Resource name="jdbc/local"
url="jdbc:mysql://127.0.0.1:3306/local"
driverClassName="com.mysql.jdbc.Driver"
username="root"
password="******"
auth="Container"
type="javax.sql.DataSource"
maxActive="20"
maxIdle="5"
maxWait="10000"
/>
请原谅我的无知,但$ CATALINA_BASE位于何处?我将JBoss安装在以下目录中:C:\ jbdevstudio \ runtimes \ jboss-eap – Chad
对JBOSS-EAP 6来说,context.xml位于C:\ jbdevstudio \ runtimes \ jboss-eap \ standalone \配置\ standalone.xml有我能够添加数据源元素的地方 – Chad