Skip to Main Content

Java EE (Java Enterprise Edition) General Discussion

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Wrapper cannot find servlet class error

843841Feb 2 2007
Hi all!

I'm receiving a mysterious error when I try to run my web ap. "Wrapper cannot find servlet class com.ruffalocody.report.ReportServlet or a class it depends on"

I'm running it on JBoss 3.2.7, and I have another web ap, made almost identical to this one which does not display the same error/exception.

If anyone could give me advice on what I should do to fix this, I'd very much appreciate it. :)

Full exception message:
javax.servlet.ServletException: Wrapper cannot find servlet class com.ruffalocody.report.ReportServlet or a class it depends on
	org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:66)
	org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:162)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
	org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
	org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
	org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
	org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	java.lang.Thread.run(Thread.java:534)


root cause 

java.lang.ClassNotFoundException: com.ruffalocody.report.ReportServlet
	java.net.URLClassLoader$1.run(URLClassLoader.java:199)
	java.security.AccessController.doPrivileged(Native Method)
	java.net.URLClassLoader.findClass(URLClassLoader.java:187)
	java.lang.ClassLoader.loadClass(ClassLoader.java:289)
	java.lang.ClassLoader.loadClass(ClassLoader.java:235)
	org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:66)
	org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:162)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
	org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
	org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
	org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
	org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	java.lang.Thread.run(Thread.java:534)
the servlet class file ReportServlet.class is located in:
WEB-INF\classes\com\ruffalocody\report


web.xml file:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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_2_5.xsd">
    <servlet>
        <servlet-name>RprtSrvlt</servlet-name>
        <servlet-class>com.ruffalocody.report.ReportServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>RprtSrvlt</servlet-name>
        <url-pattern>/reports</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
	<welcome-file>
            index.jsp
        </welcome-file>
    </welcome-file-list>
    
    <!-- Context Param -->

    <context-param>

    <param-name>crystal_image_uri</param-name>

    <param-value>crystalreportviewers10</param-value>

    </context-param>

    <!-- Context Param End -->
</web-app>
It's called from the index.jsp page w/ ulr: "reports?goTo=view"

Servlet code (not sure if it's useful, but including just in case):
/*
 * ReportServlet.java
 *
 * Created on February 1, 2007, 11:04 AM
 */

package com.ruffalocody.report;

import java.io.*;

import javax.servlet.*;
import javax.servlet.http.*;
import com.crystaldecisions.reports.reportengineinterface.JPEReportSourceFactory;
import com.crystaldecisions.sdk.occa.report.reportsource.IReportSourceFactory2;
import com.crystaldecisions.sdk.occa.report.reportsource.IReportSource;
import com.crystaldecisions.report.web.viewer.CrystalReportViewer;
import com.crystaldecisions.sdk.occa.report.lib.ReportSDKExceptionBase;

/**
 *
 * @author aerohner
 * @version
 */
public class ReportServlet extends HttpServlet
{
    String rptLoc = "CR10_JRC_BeginHere.rpt";
    
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
	response.setContentType("text/html;charset=UTF-8");
	
	String goTo = request.getParameter("goTo");
	
	if(goTo != null && goTo.equals("view"))
	{
	    viewReport(request, response);
	    
	}// end goTo view
	else if(goTo != null && goTo.equals("export"))
	{
	    exportReport(request, response);
	    
	}// end go to export
	else
	{
	    RequestDispatcher view = request.getRequestDispatcher("index.jsp");
	    view.forward(request,response);
	}
    }
    
    private void viewReport(HttpServletRequest request, 
	    HttpServletResponse response) throws ServletException, IOException
    {
	IReportSource rptSrc = setUpReportSource(request);
	
	if (rptSrc != null)
	{
	    // create viewer
	    CrystalReportViewer viewer = new CrystalReportViewer();
	    
	    try
	    {
		viewer.setReportSource(rptSrc);
		forward(request, response, viewer);
	    }
	    catch(ReportSDKExceptionBase e)
	    {
		e.printStackTrace();
	    }
	    
	}// if rptsrc not null
	else
	{
	    log("rptSrc is null");
	    
	}// end else not null
	
    }// end viewReport(.)
    
    private void exportReport(HttpServletRequest request, HttpServletResponse response)
    {
	
    }// end exportReport(.)
    
    private IReportSource setUpReportSource(HttpServletRequest request)
    {
	IReportSourceFactory2 rptFact = new JPEReportSourceFactory();
	IReportSource rptSrc = null;
	try
	{
	    rptSrc = (IReportSource)
		rptFact.createReportSource(rptLoc, request.getLocale());
	}// end try
	catch (Exception e)
	{}
	
	return rptSrc;
    }// end setUpReportSource()
    
    private void forward(HttpServletRequest request, 
	    HttpServletResponse response, Object viewer) 
	    throws ServletException, IOException
    {
	request.setAttribute("viewer", viewer);
	RequestDispatcher view = request.getRequestDispatcher("viewer.jsp");
	view.forward(request,response);
	
    }// end forward(...)
    
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
	processRequest(request, response);
    }
    
    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
	processRequest(request, response);
    }
    
    /** Returns a short description of the servlet.
     */
    public String getServletInfo()
    {
	return "Short description";
    }
    // </editor-fold>
}
Thanks :)
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Mar 2 2007
Added on Feb 2 2007
0 comments
285 views