yuris
yuris

Reputation: 1139

Weblogic: The servlet is referenced in servlet-mapping but not defined in web.xml

Getting this error why trying to deploy the war in weblogic

Caused By: weblogic.management.DeploymentException: [HTTP:101170]The servlet Web Rest Services is referenced in servlet-mapping /myrest/* but not defined in web.xml. at weblogic.servlet.internal.WebAppServletContext.verifyServletMappings(WebAppServletContext.java:1465) at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2809) at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1661) at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:822) at weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:360)

my web.xml:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">
    <display-name>REST</display-name>
    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>rest.apis</param-value>
        </init-param>
        <init-param>
            <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Web Rest Services</servlet-name>
        <url-pattern>/myrest/*</url-pattern>
    </servlet-mapping>
</web-app>

If required I can paste the code of rest resources but not sure it matters.

What worries me, can there be issue with weblogic?

Note: Recently app server was upgraded to weblogic 12.1.2

Upvotes: 2

Views: 5317

Answers (2)

Paul Samsotha
Paul Samsotha

Reputation: 208994

<servlet-name --> Jersey Web Application != Web Rest Services

The <servlet-name> in the <servlet-mapping> should correspond to a <servlet-name> in a <servlet> definition. Hence the error

The servlet Web Rest Services is referenced in servlet-mapping /myrest/* but not defined in web.xml

Upvotes: 3

Jo&#227;o Marcos
Jo&#227;o Marcos

Reputation: 3972

Try this configuration for your web.xml file:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>NAME</display-name>
<servlet>
    <servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
           <param-name>jersey.config.server.provider.packages</param-name>
           <param-value>YOUR REST CLASS PACKAGE</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>jersey-serlvet</servlet-name>
        <url-pattern>/resources/*</url-pattern>
    </servlet-mapping>
</web-app>

And create an weblogic.xml file in the same folder (web-app\WEB-INF) like this:

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
<library-ref>  
    <library-name>jax-rs</library-name>  
    <specification-version>2.0</specification-version>
    <implementation-version>2.5.1</implementation-version>  
    <exact-match>false</exact-match>
</library-ref>
<container-descriptor>
    <prefer-application-packages>
        <package-name>org.glassfish.jersey.media.*</package-name>
        <package-name>org.glassfish.jersey.client.*</package-name>
        <package-name>org.glassfish.jersey.servlet.*</package-name> 
        <package-name>org.glassfish.jersey.jaxb.internal.*</package-name>   
        <package-name>com.sun.research.ws.wadl.*</package-name>
        <package-name>org.glassfish.hk2.*</package-name>
        <package-name>org.jvnet.hk2.*</package-name>
        <package-name>jersey.repackaged.org.objectweb.asm.*</package-name>
        <package-name>org.objectweb.asm.*</package-name>
        <package-name>com.sun.ws.rs.ext.*</package-name>
        <package-name>org.aopalliance.*</package-name>
        <package-name>javax.annotation.*</package-name>
        <package-name>javax.inject.*</package-name>
        <package-name>javax.ws.rs.*</package-name>
        <package-name>jersey.repackaged.com.google.common.*</package-name>
        <package-name>javassist.*</package-name>
    </prefer-application-packages>
</container-descriptor>
<context-root>YOUR_ROOT</context-root>
</weblogic-web-app>

Upvotes: 1

Related Questions