Java 从POJO读取persistence.xml
我创建了一个EJB3项目和一个JPA项目。我正在尝试创建一个助手类(将在一个单独的项目/jar中),该类将从我的JPA项目的META-INF文件夹中的Persistence.xml文件返回持久性单元名称 如何将此文件作为输入流读取?我可以在获得对该文件的引用后解析这些值,但是如何从另一个jar的类中读取jar的META-INF文件夹中的文件呢Java 从POJO读取persistence.xml,java,jar,inputstream,Java,Jar,Inputstream,我创建了一个EJB3项目和一个JPA项目。我正在尝试创建一个助手类(将在一个单独的项目/jar中),该类将从我的JPA项目的META-INF文件夹中的Persistence.xml文件返回持久性单元名称 如何将此文件作为输入流读取?我可以在获得对该文件的引用后解析这些值,但是如何从另一个jar的类中读取jar的META-INF文件夹中的文件呢 请提供您的建议。如果您的另一个jar位于类路径中,您应该能够使用以下方法加载此文件: getClass().getResourceAsStream(“ME
请提供您的建议。如果您的另一个jar位于类路径中,您应该能够使用以下方法加载此文件: getClass().getResourceAsStream(“META-INF/persistence.xml”) 这很有效
InputStream is = Thread.currentThread().getContextClassLoader().getResource("META-INF/persistence.xml").openStream();
我在使用持久化单元一段时间后(“突然”)出现了问题 以下是有帮助的(b******解决方案,但问题只发生在devMode中,并通过此解决):
一旦获得对xml文件的引用(例如,作为上述答案中的inputstream),使用DOM或SAX解析器读取持久化单元节点的name属性。
try {
InputStream is = Thread.currentThread().getContextClassLoader(
).getResource("META-INF/persistence.xml").openStream();
FileOutputStream output= new FileOutputStream("c:/tmp/show.xml");
IOUtils.copy(is, output);
IOUtils.closeQuietly(output);
PersistenceUnitInfoImpl impl= new PersistenceUnitInfoImpl();
impl.setPersistenceXmlFileUrl(new URL("file://c:/tmp/show.xml"));
JpaBasics basics= new JpaBasics("spektrum");
basics.init(false);
EntityManager em= basics.getEm();
_log.debug("have we an em: " + em);
new TestLoad().testLoadMagazines();
} catch (Exception e) {
_log.error("", e);
}
}