Чтение файла persistence.xml из POJO - PullRequest
1 голос
/ 04 сентября 2010

Я создал проект EJB3 и проект JPA.Я пытаюсь создать вспомогательный класс (который будет находиться в отдельном проекте / банке), который будет возвращать имя модуля постоянства из файла persistance.xml, который находится в папке META-INF моего проекта JPA.

Как я могу прочитать этот файл как поток ввода?Я могу разобрать значения, как только получу ссылку на этот файл, но как мне прочитать файлы в папке META-INF банки из класса другой банки?

Пожалуйста, предоставьте свои предложения.

Ответы [ 3 ]

2 голосов
/ 08 июля 2016

У меня возникла проблема через некоторое время с использованием модуля постоянства («внезапно»).

вот что помогло (ab ****** - решение, но проблема возникает только в devMode ирешено с этим):

    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);
    }
}
1 голос
/ 28 сентября 2010

Это работает ...

InputStream is = Thread.currentThread().getContextClassLoader().getResource("META-INF/persistence.xml").openStream();
0 голосов
/ 04 сентября 2010

Если ваш другой jar находится в classpath, вы сможете загрузить этот файл, используя: getClass (). GetResourceAsStream ("META-INF / persistence.xml");

...