Я перенесу свое приложение Weblogic на JBoss 7, и мне нужно, чтобы мой код миграции мог быть запущен на обоих серверах. Имя JNDI источника данных WebLogic:
JDBC / powds
JNDI-имя источника данных Jboss:
Java: / powds
Я уже знал, что синтаксис JNDI в JBOSS 7 является другим и начинается с префикса "java:". В приложении WebLogic я использую имя JNDI в разных файлах, таких как web.xml и persistance.xml.
В коде я использую:
static final String dataSourceName = "jdbc / powds";
Я прочитал эту статью Путь JNDI Tomcat против Jboss и пытаюсь настроить мои файлы дескрипторов xmls.
Итак, у меня есть ошибка. Обязательные службы, которые не установлены: "=> [" jboss.naming.context.java.jdbc.powds "].
Как мне избежать этой ошибки? Как настроить файл persistance.xml для использования разных имен JNDI, зависит от запуска сервера приложений.
мой файл web.xml:
<resource-ref>
<res-ref-name>jdbc/powds</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
мой файл jboss-web.xml:
<resource-ref>
<res-ref-name>jdbc/powds</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<jndi-name>java:/powds</jndi-name>
</resource-ref>
мой файл weblogic.xml:
<resource-description>
<res-ref-name>jdbc/powds</res-ref-name>
<jndi-name>jdbc/powds</jndi-name>
</resource-description>
мой файл weblogic.xml:
<resource-description>
<res-ref-name>jdbc/powds</res-ref-name>
<jndi-name>jdbc/powds</jndi-name>
</resource-description>
мой файл persistance.xml:
<persistence-unit name="powpu" transaction-type="JTA" >
<jta-data-source>jdbc/powds</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
</persistence-unit>