2016-03-31 5 views
2

Использование: Jersey 1.19, TomEE Plus 1.74 Я могу получить доступ к одному и тому же методу контроллера с помощью двух разных URL-адресов.Джерси 1.19, Томее + 1.74. Web.xml Url-Pattern работает неправильно

http://localhost:8080/hello 
http://localhost:8080/rest/hello 

web.xml:

<init-param> 
    <param-name> 
     com.sun.jersey.config.property.packages 
    </param-name> 
    <paramvalue> 
     mif.ubermensch.labanorogiraite.presentation.controllers 
    </param-value> 
</init-param> 
<load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>LabanoroGiraite</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

Контроллер:

@Path("/hello") 
public class HelloController { 
    @GET 
    @Produces("text/plain") 
    public String Hello(){ 
     return "Hello, Restful world!"; 
    } 
} 

Дополнения были сделаны TomEE system.properties на основе результата, найденных на stackoverfow

openejb.api.javax.ws.rs.Path.validation=false 
com.sun.jersey.server.impl.cdi.lookupExtensionInBeanManager=true 

Без них два, acces петь URL с/отдыха/приставкой вызовет excepion:

javax.naming.NameNotFoundException: Name [com] is not bound in this Context. Unable to find [com]. 

Как ограничить доступ только через/API/* URL-шаблон?

ответ

0

Вы не упомянули, какой вкус томи, который вы используете, но если для распределения, предоставляющего jaxrs (-jaxrs или -plus), вам нужно добавить disabled = true в conf/conf.d/cxf-rs.properties.

+0

awesome! благодаря – Operatorius