Tomee动态资源/数据源

时间:2018-01-25 00:51:44

标签: java tomcat java-ee tomee

经过一段时间的搜索,我很累,希望你能帮助我。我一直在尝试编写一个带有数据源配置器的Java EE应用程序(如首次启动时的WordPress)。部署时不知道datasources。使用TomEE的路由器示例,我找到了一种在应用程序生命周期内动态替换datasources的方法。我目前正在使用以下代码生成datasources

 GeronimoTransactionManager transactionManager = (GeronimoTransactionManager) OpenEJB.getTransactionManager();

 Properties props = new Properties();
 props.setProperty("driverClassName", "com.mysql.cj.jdbc.Driver");
 props.setProperty("url", "jdbc:mysql://localhost/test");
 props.setProperty("password", "test");
 props.setProperty("passwordCipher", "PlainText");
 props.setProperty("username", "test");

 try {
     DataSource underlying = new org.apache.tomcat.jdbc.pool.DataSourceFactory().createDataSource(props);
     dataSource = new ManagedDataSource(underlying, transactionManager, transactionManager);
 } catch (Exception e) {
     e.printStackTrace();
 }

我的问题是,此时没有执行ddl-generation,因此entitymanager.persist(object);会抛出一个未生成表的异常。

以下代码生成java.lang.AbstractMethodError

Map properties = new HashMap<>();

StringWriter create = new StringWriter();

properties.put("javax.persistence.schema-generation.scripts.action", "create");
properties.put("javax.persistence.schema-generation.scripts.create-target", create);

Persistence.generateSchema("router", properties);

是否存在动态加载资源的“hacky”Java EE方式,尤其是datasources。如果没有,是否有TomEE方式?提前谢谢。

0 个答案:

没有答案