barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)
Показаны сообщения с ярлыком weblogic-maven-plugin. Показать все сообщения
Показаны сообщения с ярлыком weblogic-maven-plugin. Показать все сообщения

среда, 17 апреля 2013 г.

Weblogic 10.3.5: ошибка "java.io.FileNotFoundException: class path resource [...] cannot be resolved to absolute file path because it does not reside in the file system: zip:.../_wl_cls_gen.jar!/..."

Проблема:

При деплое war-ника на Weblogic 10.3.5 (без распаковки) вываливается ошибка:
java.io.FileNotFoundException: class path resource [...] cannot be resolved to absolute file path because it does not reside in the file system: zip:.../_wl_cls_gen.jar!/...
при попытке разворачиваемого приложения прочитать какой-либо из файлов, размещенных в WEB-INF/classes. Деплою плагином weblogic-maven-plugin.

Причина:

Судя по форуму Oracle (https://forums.oracle.com/forums/thread.jspa?threadID=842786), это некая известная проблема Weblogic'а, связанная с тем, что он зачем-то при деплое все классы из WEB-INF/classes запаковывает в _wls_cls_gen.jar, после чего возникают проблемы, если приложение пытается прочитать какой-нибудь ресурс, который до этого располагался в WEB-INF/classes (этот ресурс получается дважды упакован: в _wls_cls_gen.jar, а затем и в war). 

Решение:

Workaround`ом для этой проблемы является развертывание приложений не в war-никах, а в распакованном виде. Т.к. weblogic-maven-plugin развернуть приложение в распакованном виде не может, то подойдет другой вариант: приложение в распакованном виде запаковать в EAR, и его уже задеплоить. Как собирать распакованные war-ники в EAR, я уже писал: http://barbitoff.blogspot.ru/2013/04/maven-ear-plugin-war-ear.html. Деплой ear-ника плагином weblogic-maven-plugin ничем не отличается от деплоя war.

понедельник, 18 февраля 2013 г.

Maven: delpoy на Oracle Weblogic

Для развертывания maven`ом веб-приложений на Weblogic  в поставку последнего входит соответствующий плагин weblogic-maven-plugin. Правда его перед использованием придется самостоятельно собрать, перейдя в директорию MW_HOME/wlserver_10.3/server/lib/ и выполнив там:
java -jar wljarbuilder.jar -profile weblogic-maven-plugin
Вот небольшой пример использования этого плагина для развертывания веб-приложения:
<!-- weblogic deployment -->
<plugin>
<groupId>com.oracle.weblogic</groupId>
<artifactId>weblogic-maven-plugin</artifactId>
<version>10.3.4</version>
<configuration>
<adminurl>t3://${deployment.host}:${deployment.port}</adminurl>
<user>${deployment.user}</user>
<password>${deployment.password}</password>
<upload>true</upload>
<action>deploy</action>
<remote>true</remote>
<verbose>true</verbose>
<source>${project.build.directory}/${project.build.finalName}.${project.packaging}</source>
<name>${project.name}</name>
</configuration>    
</plugin>
В этом примере все параметры подключения к целевому Weblogic`у берутся из соответствующих свойств, и деплоится приложение под именем, равным имени проекта. К сожалению, с помощью параметров плагина нельзя управлять контекстом, в который деплоится приложение, так что приходится для этого использовать дескрипторы weblogic.xml / application.xml.
Всё вышеописанное взято из оракловской документации: http://docs.oracle.com/cd/E21764_01/web.1111/e13702/maven_deployer.htm.