Почему weblogic не использует мой план развертывания?


У меня возникли некоторые проблемы с настройкой параметров развертывания нашего приложения в weblogic. Я чувствую, что то, что я пытаюсь сделать, должно быть довольно простым, но это не работает, как ожидалось.

Я просто пытаюсь переопределить контекст-корень в weblogic.xml и имя JNDI для источника данных, поэтому их можно настроить во время развертывания.

Я удалил приложение.xml из файла ear, так что это не должно влиять на переопределения.

Что у меня так далеко:

Weblogic.xml:

<context-root>mosaic</context-root>

<resource-description>
  <res-ref-name>jdbc/LogicalDS</res-ref-name>
  <jndi-name>LogicalDS</jndi-name>
</resource-description>

Паутина.xml

<resource-ref>
  <description>A logical reference to the datasource - mapped in deployment plan</description>
  <res-ref-name>jdbc/LogicalDS</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref>

План.xml

<?xml version="1.0" encoding="UTF-8"?>
 <wls:deployment-plan xmlns:wls="http://xmlns.oracle.com/weblogic/deployment-plan" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://xmlns.oracle.com/weblogic/deployment-plan http://xmlns.oracle.com/weblogic/deployment-plan/1.0/deployment-plan.xsd http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/j2ee_1_4.xsd" global-variables="true">
 <!--weblogic-version:10.3.5-->
 <wls:application-name>mosaic.ear</wls:application-name>
 <wls:variable-definition>
    <wls:variable>
        <wls:name>datasource_name</wls:name>
        <wls:value xsi:nil="true"></wls:value>
        <wls:description>The name of the datasource to map to the mosaic application</wls:description>
    </wls:variable>
    <wls:variable>
        <wls:name>new_context_root</wls:name>
        <wls:value xsi:nil="true"></wls:value>
        <wls:description>URL to deploy Mosaic at</wls:description>
    </wls:variable>
 </wls:variable-definition>
<wls:module-override>
    <wls:module-name>mosaic.war</wls:module-name>
    <wls:module-type>war</wls:module-type>
    <wls:module-descriptor>
        <wls:root-element>weblogic-web-app</wls:root-element>
        <wls:uri>WEB-INF/weblogic.xml</wls:uri>
        <wls:variable-assignment>
            <wls:name>new_context_root</wls:name>
            <wls:xpath>/weblogic-web-app/context-root</wls:xpath>
            <wls:operation>replace</wls:operation>
        </wls:variable-assignment>
        <wls:variable-assignment>
            <wls:description>Data source for mosaic application</wls:description>
            <wls:name>datasource_name</wls:name>
            <wls:xpath>/weblogic-web-app/resource-env-description/resource-env-ref-name</wls:xpath>
            <wls:operation>replace</wls:operation>
        </wls:variable-assignment>
        <wls:variable-assignment>
            <wls:name>datasource_name</wls:name>
            <wls:xpath>/weblogic-web-app/resource-description/[res-ref-name="jdbc/LogicalDS"]/jndi-name</wls:xpath>
            <wls:operation>replace</wls:operation>
        </wls:variable-assignment>
    </wls:module-descriptor>
  </wls:module-override>
</wls:deployment-plan>

Ничего не происходит, когда я использую план развертывания, и ни одна из переменных не появляется под экранами конфигурации плана развертывания в консоли администратора. Из того, что я понимаю, меня должны, по крайней мере, спросить об этих переменных, поскольку я указал, что они являются нулевыми в плане развертывания.

Когда я использую WLST для просмотра дерева, я нахожу, что конфигурация среды выполнения просто остается как значения в дескрипторах развертывания.

Я проверил, что план развертывания используется на вкладке Общие консоли администратора.

Может ли кто-нибудь помочь мне выяснить, что я здесь делаю не так ?
1 3

1 ответ:

Я вижу, что у вас есть замена переменной datasource_name дважды. Так ли это задумано? Ваш xpath кажется неправильным:

Описание ресурса/[res-ref-name= и т.д.

Должно ли это быть:

Описание ресурса[res-ref-name= и т.д.

Мое предложение состоит в том, чтобы изменить одну вещь за один раз, например, сначала контекст веб-приложения, а затем тест. Контекст веб-приложения также можно задать в консоли администратора, поэтому вы должны увидеть значение там.

Хороших мало статьи о плане развертывания:

Https://blogs.oracle.com/jamesbayer/entry/11gr1_update_and_a_deployment

Http://m-button.blogspot.com/2008/08/how-to-use-deployment-plan.html

Хорошее отображение ресурсов doc:

Http://docs.oracle.com/cd/E15523_01/web.1111/e13737/packagedjdbc.htm (посмотрите на диаграмму внизу).

Является ли ваша переменная "заменой"или " определением"?