Pax не найдет ваши TLD , если они находятся в комплекте, отличном от вашего веб-приложения:
Tag Libs
Для того чтобы ваши пользовательские теги работали, ваши файлы TLD должны быть доступны в вашем пакете в «особых» местах:
- все файлы tld в любом фляге, на которую ссылается ваша запись манифеста Bundle-ClassPath
- все tld файлы в каталоге WEB-INF или подкаталоге WEB-INF в вашем пакете jar
Обратите внимание, что ваши импортированные пакеты не будут найдены (возможно,эта поддержка будет добавлена позже)
У меня возникла эта проблема в системе на базе Struts, где я разделяю пакет Struts, основанный на OSGi, между несколькими пакетами веб-приложений.В веб-приложениях есть JSP, для которых требуется тег библиотеки Struts.
Немного хакерский (потому что он копирует TLD повсеместно) обходной путь - поместить TLD в каталог META-INF
вашего веб-приложения и сделать импорт пакета веб-приложения необходимым Strutsпакеты (или, если вы не используете Struts, какие-либо классы обрабатывают теги).Это может быть автоматизировано с Maven следующим образом:
<plugin>
<!--
Extract the TLD file from the Struts bundle you are using
and place it in src/main/resources/META-INF of your webapp's
project directory during generate-resources. This will make
the file end up in the appropriate place in the resulting WAR
-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>extract-tld</id>
<phase>generate-resources</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts.version}</version>
<outputDirectory>src/main/resources</outputDirectory>
<includes>META-INF/struts-tags.tld</includes>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<!--
Add the required Manifest headers using the maven-bundle-plugin
-->
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<!-- ... -->
<instructions>
<!-- ... -->
<Import-Package>[...],org.apache.struts2.views.jsp</Import-Package>
<!-- ... -->
</instructions>
</configuration>
</plugin>