ATL taglibs по проблемам OSGI - PullRequest
0 голосов
/ 06 февраля 2009

В настоящее время мы создаем приложение, которому требуются теги ATG для SLING / OSGI, мы создали пакет с этими тегами и загрузили его, конечно, эти теги вызывают классы ATG, поэтому мы включаем их в загрузочную делегацию, используя sling Файл .properties.

sling.bootdelegation.simple = atg.nucleus sling.bootdelegation.class.atg.nucleus.Nucleus = atg.appassembly, \ atg.appassembly.ant, \ atg.appassembly.progress, \ atg.appassembly.util, \ ... ETC ...

Сначала мы получили эту ошибку:

org.apache.sling.api.scripting.ScriptEvaluationException: atg / taglib / dspjsp / ImportBeanTag в org.apache.sling.scripting.core.impl.DefaultSlingScript.call (DefaultSlingScript.java:163) в org.apache.sling.scripting.core.impl.DefaultSlingScript.eval (DefaultSlingScript.java:107) в org.apache.sling.scripting.core.impl.DefaultSlingScript.service (DefaultSlingScript.java:226) в org.apache.sling.engine.impl.request.RequestData.service (RequestData.java:465)

....

.... Вызывается: java.lang.NoClassDefFoundError: atg / taglib / dspjsp / ImportBeanTag в org.apache.jsp.apps.mygeometrixx.components.contenpage.center_jsp._jspx_meth_dsp_005fimportbean_005f0 (center_jsp.java:177) в org.apache.jsp.apps.mygeometrixx.components.contenpage.center_jsp._jspService (center_jsp.java:154) в org.apache.sling.scripting.jsp.jasper.runtime.HttpJspBase.service (HttpJspBase.java:70) на javax.servlet.http.HttpServlet.service (HttpServlet.java:810) в

Итак, мы добавили atg.taglib.dspjsp в пакеты, которые нужно добавить в файл bootdelegation sling.properties.

Тогда мы получили эту ошибку:

org.apache.sling.api.scripting.ScriptEvaluationException: atg.taglib.dspjsp.ImportBeanTag в org.apache.sling.scripting.core.impl.DefaultSlingScript.call (DefaultSlingScript.java:163) в org.apache.sling.scripting.core.impl.DefaultSlingScript.eval (DefaultSlingScript.java:107) в org.apache.sling.scripting.core.impl.DefaultSlingScript.service (DefaultSlingScript.java:226) в org.apache.sling.engine.impl.request.RequestData.service (RequestData.java:465) ...

Причина: java.lang.ClassCastException: atg.taglib.dspjsp.ImportBeanTag в org.apache.sling.scripting.jsp.jasper.runtime.TagHandlerPool.get (TagHandlerPool.java:125) в org.apache.jsp.apps.mygeometrixx.components.contenpage.center_jsp._jspx_meth_dsp_005fimportbean_005f0 (center_jsp.java:177) в org.apache.jsp.apps.mygeometrixx.components.contenpage.center_jsp._jspService (center_jsp.java:154) в org.apache.sling.scripting.jsp.jasper.runtime.HttpJspBase.service (HttpJspBase.java:70)

Все это работает на JBOSS.

Есть ли способ избежать этого конфликта классов, который вызывает исключение приведения?

Ответы [ 2 ]

1 голос
/ 09 мая 2012

При загрузке библиотек тегов ATG из-за пределов платформы OSGi вы также должны убедиться, что JSP API предоставляется извне. По умолчанию Sling встраивает JSP API (в комплект JSP Scripting).

Существуют различные способы представления API JSP в рамках. Один из них - добавить их в системные пакеты в файле sling.properties:

sling.system.packages.atg_jsp = javax.servlet.jsp;javax.servlet.jsp.el; \
 javax.servlet.jsp.resources;javax.servlet.jsp.tagext;version=2.1.0
1 голос
/ 08 августа 2010

Исключение приведения класса обычно является признаком того, что этот класс становится доступным в двух разных местах (в вашем случае, вероятно, с помощью начальной загрузки и, возможно, с помощью пакета, экспортирующего этот класс). Это то, что я бы сначала расследовал.

Кроме того, для большей ясности я бы вообще посоветовал вам не использовать делегирование загрузки, а вместо этого экспортировать эти пакеты явно через системный комплект. Таким образом, по крайней мере, вы сможете лучше отлаживать, откуда берутся классы и как все «связывается» с помощью резольвера OSGi.

...