2013-05-16 1 views
2

В нашем web.xml, мы CXFServlet сопоставляется с/* шаблон URL:Как я могу сделать исключение в/* url-pattern в web.xml?

<servlet-mapping> 
    <servlet-name>CXFServlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

Это прекрасно работает, и мы не хотим, чтобы изменить его в этой точке. Но я хотел бы иметь html-страницу (/admin/index.html), которая не обрабатывается CXFServlet, а просто обрабатывается непосредственно как html. Как я могу это сделать? Я не знаю, как создать отображение сервлета, чтобы обслуживать html-страницу.

Обратите внимание, что мы используем IBM WebSphere 8 (WAS 8), если это имеет значение.

+0

Рассмотрим 'радушны-файлов list' и' добро-file' –

+0

'добро-file' делает не работа; Я добавил приветственный файл 'index.html', но CXFServlet все еще обрабатывает запросы для'/admin' и '/ admin /'. Он отвечает «Нет службы найден». –

+0

@MichaelLucas, Да, вы правы. Это должно быть наоборот. –

ответ

0

Ни один из данных ответов (до сих пор) не соответствовал моим требованиям, но я нашел простое решение.

По какой-то причине оказывается, что WebSphere будет обрабатывать JSP самостоятельно, а не делегировать сервлет, который имеет сопоставление /*, даже если в web.xml не указано конкретное JSP. Может быть, это часть спецификации, и нужно было бы явно сопоставить *.jsp с сервлетом, если вы хотите, чтобы он обрабатывал эти запросы?

В любом случае, это работает для меня - вместо того, чтобы использовать /admin/index.html я могу использовать /admin/index.jsp (и, вероятно, добавить index.jsp приветствовать-файл-лист, так что запросы на /admin также даст эту страницу).

0

Вы можете попробовать:

<servlet-mapping> 
    <servlet-name>CXFServlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>/admin/*</url-pattern> 
</servlet-mapping> 

Это произведения в Jetty и Tomcat.

0

Вы можете иметь некоторый код в CXFServlet.java

В doget() методы:

URL url = new URL(request.getRequestURL()); 
    System.out.println("URL is:" + url); 
if (url.toString().contains("/admin/")) { 
     response.setContentType("text/html; charset=UTF-8"); 
     PrintWriter pw = response.getWriter(); 
     pw.print("<!DOCTYPE html><html lang=\"fa\" dir=\"rtl\">\n" 
       + "<head>" 
       + "<meta charset=\"utf-8\"/>" 
       + "</head>" 
       + "<body>" 
       + "<div>some thing</div>" 
       + "<body></html>"); 
     pw.close(); 
     return; 
    } 
+0

Мы не хотели изменять CXFServlet.java –