Maven 2 @部署到Glassfish上时未调用PostConstruct方法
我计划使用LiquiBase来管理数据库,我希望每次将web应用程序部署到Glassfish 3.1时都能运行它。为此,我编写了以下类:Maven 2 @部署到Glassfish上时未调用PostConstruct方法,maven-2,ejb,glassfish-3,war,liquibase,Maven 2,Ejb,Glassfish 3,War,Liquibase,我计划使用LiquiBase来管理数据库,我希望每次将web应用程序部署到Glassfish 3.1时都能运行它。为此,我编写了以下类: @Singleton @Startup public class LiquibaseWrapper { @Resource(name = "jdbc/mydatabase") private DataSource dataSource; @PostConstruct @TransactionAttribute(Transac
@Singleton
@Startup
public class LiquibaseWrapper {
@Resource(name = "jdbc/mydatabase")
private DataSource dataSource;
@PostConstruct
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public void doLiquibaseUpdate() {
ResourceAccessor fileOpener = new ClassLoaderResourceAccessor();
DatabaseFactory databaseFactory = DatabaseFactory.getInstance();
Database database = null;
try {
database = databaseFactory
.findCorrectDatabaseImplementation(new Jdbc Connection(
dataSource.getConnection()));
Liquibase liquibase = new Liquibase("ChangeLog.xml",
fileOpener, database);
liquibase.update("");
} catch (DatabaseException e) {
// TODO: handle error
} catch (SQLException e) {
// TODO: handle error
} catch (LiquibaseException e) {
// TODO: handle error
}
}
}
问题是,当我通过Eclipse将应用程序部署到服务器上时,doLiquiBaseUpdate()没有执行。当我用它构建WAR文件并手动部署它时,就会执行该方法
我有点困惑,为什么通过eclipse部署时doLiquiBaseUpdate()不运行
其他可能有用的信息:
-正在使用Maven 2构建战争
-使用JSF2.1
-数据库是MySQL
-使用LiquiBase 2.0.3
-EclipseIndigo与Glassfish服务器工具1.7.3