[
https://issues.jboss.org/browse/AS7-3162?page=com.atlassian.jira.plugin.s...
]
Weinan Li commented on AS7-3162:
--------------------------------
You have mixed up the concept of javax.ws.rs.core.Application and the servlet in
servlet-mapping.
The servlet-name in servlet-mapping is an instance of HttpServlet30Dispatcher or
HttpServletDispatcher not a class that extends Application.
So I hate the servlet name used in as7 container. It creates confusions :-)
Let me repeat the concept more concisely here:
1. Use @ApplicationPath in your class that extends Application
2. Use servlet-mapping with servlet name "javax.ws.rs.core.Application"(which is
actually an HttpServlet30Dispatcher servlet that AS7 has created for you.)
3. Use the traditional method to configure your application(listeners, context params,
servlet, mappings). I've given you an example on this:
https://github.com/liweinan/try-resteasy
RESTEasy: Unknown servet name javax.ws.rs.core.Application when
javax.ws.rs.core.Application subclass is on classpath
----------------------------------------------------------------------------------------------------------------------
Key: AS7-3162
URL:
https://issues.jboss.org/browse/AS7-3162
Project: Application Server 7
Issue Type: Bug
Components: REST
Affects Versions: 7.1.0.CR1b
Reporter: Pavel Janousek
Assignee: Weinan Li
Priority: Blocker
I've deployment like this:
{code}
@Deployment
public static Archive<?> deploy() {
WebArchive war = ShrinkWrap.create(WebArchive.class, "jaxrsnoap.war");
war.addPackage(HttpRequest.class.getPackage());
war.addClasses(ApplicationTestCase.class, ApplicationInvalid1.class);
war.addAsWebInfResource(
WebXml.get("<servlet-mapping>\n"
+ "
<servlet-name>javax.ws.rs.core.Application</servlet-name>\n"
+ " <url-pattern>/myjaxrs/*</url-pattern>\n"
+ "</servlet-mapping>\n" + "\n"), "web.xml");
return war;
}
{code}
This deployment fails during deploying because of "Context [/jaxrsnoap] startup
failed due to previous errors: java.lang.IllegalArgumentException: Servlet mapping
specifies an unknown servlet name javax.ws.rs.core.Application"
ApplicationInvalid1 is empty subclass of javax.ws.rs.core.Application like:
{code}
public class ApplicationInvalid1 extends Application {
private Set<Class<?>> classes = new HashSet<Class<?>>();
public ApplicationInvalid1() {
}
@Override
public Set<Class<?>> getClasses() {
return classes;
}
}
{code}
There isn't any reference to this class in web.xml or somewhere else. Only class is
placed on classpath. If I remove this class from deployment (= change appropriate line to
"war.addClasses(ApplicationTestCase.class);", everything will be OK.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira