0

I'm trying to make a communication between two servlets by using POST method. Locally every thing works. However, when i deploy my servlets over a real servers I got an exception. How can I resolve it please ?

In my first servlet1 I have:

try {
        gwtServlet = new URL("http://dbapp-test-env.elasticbeanstalk.com/Bdconnection");
        HttpURLConnection servletConnection = (HttpURLConnection) gwtServlet.openConnection();
        servletConnection.setRequestMethod("POST");
        servletConnection.setDoOutput(true);   
        ObjectOutputStream objOut = new ObjectOutputStream(servletConnection.getOutputStream());
        objOut.writeObject(obj);
        objOut.flush();
        objOut.close();
        code = servletConnection.getResponseCode();
        str = servletConnection.getErrorStream();
        servletConnection.getInputStream();

} catch (Exception e) {
            response.getWriter().println("Exception : "+getStackTrace(e));
            response.getWriter().println("Error in catch of servlet 1: "+getStringFromInputStream(str));
            e.printStackTrace();
        }

If you remarked, I keep also the trace of the exception in catch.

I the second servlet located at http://dbapp-test-env.elasticbeanstalk.com/Bdconnection. I have in its doPost:

try {
            ObjectInputStream objIn = new ObjectInputStream(request.getInputStream());
            SimObjectResult obj = (SimObjectResult) objIn.readObject();

        } catch (Throwable e) {
            printwriter.print(getStackTrace(e));
        }

During the execution I got this exception in servelt 1:

    Exception : java.io.IOException: Server returned HTTP response code: 500 for URL: http://dbapp-test-env.elasticbeanstalk.com/Bdconnection
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1890)
    at sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1885)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1884)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1457)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
    at org.simulation.Simulation.doPost(Simulation.java:92)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:676)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: Server returned HTTP response code: 500 for URL: http://dbapplicationcoapssample-test-env.elasticbeanstalk.com/Bdconnection
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
    at org.simulation.Simulation.doPost(Simulation.java:90)
    ... 24 more

And the exception of the internal server

Error in catch of servlet 1: java.lang.ClassNotFoundException: org.simulation.SimObjectResult   at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)  
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)  
    at java.lang.Class.forName0(Native Method)  
    at java.lang.Class.forName(Class.java:278)  
    at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:625)   
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)  
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)    
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)   
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) 
    at org.stockage.Bdconnection.doPost(Bdconnection.java:78)   
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)    
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)    
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)   
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)    
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)    
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)  
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)  
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)   
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)    
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)    
    at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:683)  
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)    
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)    
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)  
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)  
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)  
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)  
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)  
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)   
    at java.lang.Thread.run(Thread.java:745)

In the war application of my both servlets I have SimObjectResult.class

Mehdi
  • 2,160
  • 6
  • 36
  • 53

1 Answers1

1

The error is this one

java.lang.ClassNotFoundException: org.simulation.SimObjectResult

Check if that the jar containing the class org.simulation.SimObjectResult is present in the classpath of your web application or not.

All the other errors are related to this one.

Davide Lorenzo MARINO
  • 26,420
  • 4
  • 39
  • 56
  • Lorenzo In the jar of my servelt 2, i check in WEB-INF/classes i have SimObjectResult.class. Also in the jar of my servelt 1, I have SimObjectResult.class – Mehdi Jan 06 '16 at 11:54
  • Check it on the deployed application, not in the source code – Davide Lorenzo MARINO Jan 06 '16 at 11:56
  • In my servelt1 I have org.simulation.SimObjectResult.class and in the servelt 2 I have org.stock.SimObjectResult.class. It's a same class but each servlet has its one in the jar. What I don't understand, why the class is not founded in servelet 2 but it use org.simulation.SimObjectResult – Mehdi Jan 06 '16 at 12:02
  • In the server causing the exception you have the org.stock.SimObjectResult that is not org.simulation.SimObjectResult. So the ClassNotFoundException is thrown. A class is defined by name and package. Here the packages are differents – Davide Lorenzo MARINO Jan 06 '16 at 12:05
  • But in servlet 2 I told him to use org.stock.SimObjectResult and in Servlet 1 to use org.simulation.SimObjectResult. So, why it use org.simulation.SimObjectResult in servelet 2 !! – Mehdi Jan 06 '16 at 12:09
  • Somewhere you asked for the wrong package. I don't know if in the code or in some configuration file (spring for example). – Davide Lorenzo MARINO Jan 06 '16 at 12:10