Как заставить WebLogic обрабатывать определенные файлы как JSP - PullRequest
2 голосов
/ 24 мая 2011

Я мигрирую веб-приложение на Java из OC4J в WebLogic 11g.Приложение содержит следующее отображение сервлета:

<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*_dyn.txt</url-pattern>
</servlet-mapping>

Это работает в OC4J по двум причинам:
- имя сервлета "jsp" автоматически сопоставляется с сервлетом JSP
- OC4J принимает шаблон* _dyn.txt, даже если он не соответствует стандарту сервлета.

Я обнаружил в WebLogic, что я могу явно сопоставить имя сервлета "jsp" с сервлетом JSP, добавив следующее:

<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>weblogic.servlet.JSPServlet</servlet-class>
</servlet>

Это работает, если я использую стандартный шаблон URL, такой как / dyn / *, но не нестандартный шаблон URL * _dyn.txt, который был принят OC4J.

Я попытался использовать UrlRewriteFilter Tuckey для сопоставленияэто вместо этого, но это приводит к исключению в классе JSPServlet.

Мое правило UrlRewriteFilter выглядит так:

<rule match-type="wildcard">
    <from>**/*_dyn.*</from>
    <run class="weblogic.servlet.JSPServlet" method="service" />
</rule>

Исключение, которое я получаю, таково:

Error 500--Internal Server Error 
[AddToMap: pattern=/bla/test_dyn.txt class=jsp_servlet._bla.__test_dyn_txt]
    at weblogic.servlet.JSPServlet.service(JSPServlet.java:220)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.tuckey.web.filters.urlrewrite.Run.invokeRunMethod(Run.java:416)

Может кто-нибудь сказать мне, как я могу достичь своей цели?

Спасибо
Мартин

...