Weblogic Deployment Plan


Wczoraj miałem przyjemność przygotowywać procedurę instalacyjną kolejnej wersji dewelopowanej aplikacji Java EE na serwerze WebLogic. Niestety najnowsza odsłona nie pozostaje kompatybilna wstecz (zmiana WSDL) i powinna egzystować “obok” poprzedniej. Przypadłość ta uniemożliwia wykorzystanie mechanizmu wersjonowania aplikacji udostępnianego przez serwer firmy Oracle (parametr Weblogic-Application-Version pliku MANIFEST.MF, http://eelzinga.wordpress.com/2009/08/05/weblogic-side-by-side-deployment). Instalacja EAR’a pod inną nazwą owocuje stosem wyjątków, których przyczyny są dwojakie:

  • ten sam Context Root modułu WAR.
  • identyczne Endpoint’y WebService’ów.

Zabrałem się więc za czytanie o tzw. Deployment Plan (DP). Technologia bardzo ciekawa polegająca na automatycznej zmianie konfiguracyjnych plików XML aplikacji przed jej instalacją. Tutaj przychodzi mi na myśl odwieczny spór odnośnie stosowania adnotacji, czy opisywania np. EJB w pliku ejb-jar.xml. Sam deskryptor Plan.xml zawiera dwie główne sekcje. Druga (umieszczana w dalszej części pliku) odpowiada za mapowanie modułów, określenie URI danego pliku konfiguracyjnego, oraz definicję nazw zmiennych i ścieżek XPath do nich prowadzącym. Pierwsza sekcja przypisuje konkretnym zmiennym odpowiednie wartości. Istnieje możliwość posiadania różnych Deployment Plan’ów na poszczególne środowiska (dev, test, prod). Nad samą technologią nie będę się dalej rozwodził. Podam jedynie kilka użytecznych linków, gdyż treść ich uważam za wystarczającą do “szybkiego startu”:

Przykładowy fragment pliku Plan.xml:

...
<variable-definition>
  <variable>
    <name>web-app-context-root</name>
    <value>newRoot</value>
  </variable>
</variable-definition>
...
<module-override>
  <module-name>MyWebApp.war</module-name>
  <module-type>war</module-type>
  <module-descriptor external="false">
    <root-element>weblogic-web-app</root-element>
    <uri>WEB-INF/weblogic.xml</uri>
    <variable-assignment>
      <name>web-app-context-root</name>
      <xpath>/weblogic-web-app/context-root</xpath>
      <operation>replace</operation>
    </variable-assignment>
  </module-descriptor>
</module-override>
...

Task Ant’owy wldeploy posiada parametr pozwalający wyspecyfikować plan deployment’u. Niestety z konsoli web’owej nie udało mi się tego dokonać bezpośrednio podczas instalacji. Objaśnienie znajdujące się przy polu “Upload a deployment plan (this step is optional)” jest dla mnie niezrozumiałe. Czy wie ktoś jak stworzyć archiwum DP? W pomocy serwera WebLogic znalazłem instrukcję jak zastosować DP do świeżo wgranej aplikacji z poziomu konsoli administracyjnej. Należy bowiem przejść do sekcji “Deployments”, wybrać interesującą nas aplikację poprzez zaznaczenie odpowiedniego checkbox’a, a następnie wykonać komendę “update”. Na nowym ekranie podajemy ścieżkę do Deployment Plan’u i “Finish” – parametry zostały zaktualizowane.

Poniżej zamieszczam skrypt powłoki pozwalający na szybki deploy:

set BEA_HOME=E:\Programy\Oracle\Middleware
call %BEA_HOME%\wlserver_10.3\server\bin\setWLSEnv.cmd
set PATH=%BEA_HOME%\jdk160_14_R27.6.5-32\bin
java weblogic.Deployer -adminurl http://localhost:7101 -user weblogic -password weblogic1 -deploy -name SwdStarterService -source SwdStarterService.ear -targets DefaultServer -stage -plan Plan.xml

Konkluzja moich bojów z dania 14.02.2011:

  • WebLogic nie obsługuje zmiany parametru context-root pliku META-INF/application.xml (EAR). Parametr ten należy przenieść do deskryptora weblogic.xml (WAR), gdzie możliwa jest tego modyfikacja za pomocą DP.
  • Powtórny deployment aplikacji o tej samej nazwie z poziomu konsoli administracyjnej WLS przebiega bezproblemowo – system sam prosi o podanie nowej, unikalnej nazwy.
  • Przy wyspecyfikowaniu parametru wsdlLocation adnotacji @WebService zmienna contextpath Endpoint’u Web Service (http://host:port/contextpath/serviceName) wyliczana jest na podstawie atrybutu location tag’a soap:address. Przy deploy’u drugiej, niemal identycznej aplikacji na jednym serwerze aplikacyjnym WLS, należy zmodyfikować automatycznie każdy z WSDL’i (oczywiście za pomocą DP).

Miłe wspomnienie z dnia 14.02.2011 – kłódka na moście Świętokrzyskim :).

Kłódka most Świętokrzyski 14.02.2011

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: