0

I am very new to using Restful web services. I am trying to run a simple Restful API from Eclipse using Postman from Tutorialspoint UserManagement example.

I have created a WAR file using Eclipse, and to deploy war file into servlet container, based on what I have found out from the following link instructions to deploy war file into tomcat, you copy paste the war file into the webapp folder in apache tomcat 8.0.49 folder paste the following link in your web browser or Postman http://localhost:8080/RestAPI_UserManagement/rest/UserService/user . enter image description here

But keep getting an

HTTP 500 error in Postman,

    <body>
        <h1>HTTP Status 500 - Error instantiating servlet class org.glassfish.jersey.servlet.ServletContainer.class</h1>
        <div class="line"></div>
        <p>
            <b>type</b> Exception report
        </p>
        <p>
            <b>message</b>
            <u>Error instantiating servlet class org.glassfish.jersey.servlet.ServletContainer.class</u>
        </p>
        <p>
            <b>description</b>
            <u>The server encountered an internal error that prevented it from fulfilling this request.</u>
        </p>
        <p>
            <b>exception</b>
        </p>
        ...
        ...
        ...
    </body>

and in the Eclipse console I am getting the following error

SEVERE: Allocate exception for servlet Jersey Restful API
java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer.class
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1335)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1163)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:542)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:523)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1091)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:817)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

I've written the following code in my project folder(POJO class, Rest API, and business logic to implement Rest API). Here is the business login to implement Rest API and web.xml.

UserServices.java

package com.RestAPI;

import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/Userservices")
public class UserServices {
    UserDao userDao = new UserDao();
    @GET
    @Path("User")
    @Produces(MediaType.APPLICATION_XML)
    public List<User> getUsers(){
        return userDao.getUserList();
    }
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
   xmlns = "http://java.sun.com/xml/ns/javaee"  
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
   id = "WebApp_ID" version = "3.0">
   <display-name>User Management</display-name>
   <servlet>
    <servlet-name>Jersey Restful API</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer.class</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.RestAPI</param-value>
    </init-param>
   </servlet>
   <servlet-mapping>
    <servlet-name>Jersey Restful API</servlet-name>
    <url-pattern>/rest/*</url-pattern>
   </servlet-mapping>
</web-app>

Here is my file structure for my project. I have downloaded all of Jersey libraries into the /Webcontent/WEB-INF/lib path in my project. enter image description here

Here is my catalina.out tomcat log.

/Volumes/Macintosh HD/Users/Roys_laptop/apache-tomcat-8.0.49/bin/catalina.sh: line 456: /usr/libexec/java_home:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk:/bin/java: No such file or directory

Based on this my catalina.out tomcat log, it says there is some variable is missing. But I am not sure what that is, and how to set it. Some help please...

Roy
  • 73
  • 2
  • 8

0 Answers0