Java Liquibase作为Servlet侦听器的数据源
我开始在web.xml文件中配置Liquibase,但我不明白datasource属性指的是什么: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
<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应用程序中。您可能在某处有一个C3P0DataSource
连接池,或者以某种方式访问底层JDBCconnection
如果是这种情况,您可以按如下方式滚动自己的初始化并将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("");