Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Liquibase作为Servlet侦听器的数据源_Java_Jakarta Ee_Struts_Jndi_Liquibase - Fatal编程技术网

Java Liquibase作为Servlet侦听器的数据源

Java Liquibase作为Servlet侦听器的数据源,java,jakarta-ee,struts,jndi,liquibase,Java,Jakarta Ee,Struts,Jndi,Liquibase,我开始在web.xml文件中配置Liquibase,但我不明白datasource属性指的是什么: <context-param> <param-name>liquibase.datasource</param-name> <param-value>java:comp/env/jdbc/default</param-value> </context-param> 老实说,我不知道什么是JNDI,也不知道如何使用JN

我开始在web.xml文件中配置Liquibase,但我不明白datasource属性指的是什么:

<context-param>
  <param-name>liquibase.datasource</param-name>
  <param-value>java:comp/env/jdbc/default</param-value>
</context-param>
老实说,我不知道什么是JNDI,也不知道如何使用JNDI

我应该在特定的上下文参数值中写什么?有没有什么方法可以像我用hibernate做的那样


我正在使用Tomcat 6.0,以防有所帮助。

属性
liquibase.datasource
指的是Web应用程序JNDI目录中
datasource
对象的JNDI名称,如liquibase手册中所述

因为您没有使用JNDI,所以不能使用Liquibase提供的默认Servlet侦听器
LiquibaseServletListener
。我假设您正在直接创建JDBC资源,例如在web应用程序中。您可能在某处有一个C3P0
DataSource
连接池,或者以某种方式访问底层JDBC
connection

如果是这种情况,您可以按如下方式滚动自己的初始化并将JDBC
连接注入:

DataSource dataSource = ... // get from Hibernate somehow
Connection connection = dataSource.getConnection();
JdbcConnection liquibaseConnection = new JdbcConnection(connection);
Liquibase liquibase = new Liquibase("mychangelog.xml",...,liquibaseConnection);
liquibase.update("");
此代码段未经测试,但应为s.th。像那样。您可以将其添加到您自己的Servlet上下文初始值设定项侦听器或应用程序特定的代码中—任何您手头有Hibernate配置并可以检索数据源的地方。首先,看看
liquibase.servlet.LiquibaseServletListener
的源代码

DataSource dataSource = ... // get from Hibernate somehow
Connection connection = dataSource.getConnection();
JdbcConnection liquibaseConnection = new JdbcConnection(connection);
Liquibase liquibase = new Liquibase("mychangelog.xml",...,liquibaseConnection);
liquibase.update("");