我创建了一个OpenShift应用程序(Tomcat 7(JBoss EWS 2.0))并在developercorey的帮助下,我能够将我的应用程序部署到OpenShift并连接到OpenShift中的本地MySQL数据库。
我现在尝试仅在本地计算机上连接到同一数据库,但是当我调用initialContext.lookup(“jdbc / local”)时,它会抛出错误。即使在OpenShift中部署应用程序时,它也无法找到context.xml文件。
异常:javax.naming.NoInitialContextException:需要在环境或系统属性中指定类名,或者在applet参数中或在应用程序资源文件中指定类名:java.naming.factory.initialNeed指定环境或系统中的类名属性,或作为applet参数,或在应用程序资源文件中:java.naming.factory.initial 例外:java.lang.NullPointerExceptionnull
我习惯了Tomcat,数据源的位置位于: WebContent \ META-INF \ context.xml
但对于JBoss,context.xml位于: .openshift \配置\ 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"
/>
答案 0 :(得分:1)
你是对的。在使用OpenShift时,更新context.xml文件所需的路径确实是.openshift \ config \ context.xml
但是,如果你在当地工作。您需要在以下路径下更新context.xml - $ CATALINA_BASE / conf / context.xml