0

I'm getting a ClassNotFoundException: org.apache.struts2.dispatcher.FilterDispatcher while calling servlet as a welcome file.

Below is the 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" 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" id="WebApp_ID" version="3.0">

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>Welcome</servlet-name>
        <servlet-class>java.Welcome</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Welcome</servlet-name>
        <url-pattern>/Welcome</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>10</session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>Welcome</welcome-file>
    </welcome-file-list>
 </web-app>

And below is my servlet class:

package java;

import java.io.IOException;
import java.org.in.pesca.viewForms.LoginForm;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@SuppressWarnings("serial")
public class Welcome extends HttpServlet{
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        HttpSession s = req.getSession();
        if(!s.isNew()){
            s.invalidate();
            s = req.getSession(true);
        }

        LoginForm loginForm = new LoginForm();
        Cookie[] cookies = req.getCookies();
        if(cookies == null || cookies.length == 0){
            for (Cookie cookie : cookies) {
                if(cookie.getName().trim().equals("UserNameCookie")){
                    loginForm.setUserName(cookie.getValue().trim());
                    loginForm.setRememberMe(true);
                } else if(cookie.getName().trim().equals("PasswordCookie")){
                    loginForm.setPassword(cookie.getValue().trim());
                    loginForm.setRememberPassword(true);
                }
            }
        }
        s.setAttribute("LoginForm", loginForm);

        req.getRequestDispatcher("index.jsp").forward(req, resp);
    }
}

Below is the stack trace:

[#|2011-12-07T01:26:22.443+0530|SEVERE|glassfish3.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=62;_ThreadName=admin-thread-pool-4848(2);|WebModule[/SEAFOOD]PWC1270: Exception starting filter struts2
java.lang.InstantiationException
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:124)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4625)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:5316)
    at com.sun.enterprise.web.WebModule.start(WebModule.java:500)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:917)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:901)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:755)
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1980)
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1630)
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:100)
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:130)
    at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:269)
    at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:286)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:461)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:370)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1067)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1247)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:465)
    at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:222)
    at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168)
    at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:234)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.FilterDispatcher
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1518)
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1368)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:252)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:120)
    ... 40 more
|#]

[#|2011-12-07T01:26:22.459+0530|INFO|glassfish3.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=62;_ThreadName=admin-thread-pool-4848(2);|WEB0671: Loading application [SEAFOOD] at [/SEAFOOD]|#]

[#|2011-12-07T01:26:22.620+0530|INFO|glassfish3.1|javax.enterprise.system.tools.admin.org.glassfish.deployment.admin|_ThreadID=62;_ThreadName=admin-thread-pool-4848(2);|SEAFOOD was successfully deployed in 1,212 milliseconds.|#]

[#|2011-12-07T01:27:36.945+0530|INFO|glassfish3.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=37;_ThreadName=http-thread-pool-8080(4);|PWC1412: WebModule[null] ServletContext.log():PWC1409: Marking servlet Welcome as unavailable|#]

[#|2011-12-07T01:27:36.946+0530|SEVERE|glassfish3.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=37;_ThreadName=http-thread-pool-8080(4);|WebModule[/SEAFOOD]Error loading WebappClassLoader (delegate=true; repositories=WEB-INF/classes/) java.Welcome
java.lang.ClassNotFoundException: java.Welcome
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1518)
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1368)
    at org.apache.catalina.core.StandardWrapper.loadServletClass(StandardWrapper.java:1394)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1258)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:1070)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:189)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
    at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    at java.lang.Thread.run(Thread.java:619)
|#]

I've moved to eclipse from Netbeans. Are there any specific settings required?

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
Chinmay
  • 180
  • 1
  • 2
  • 13
  • What class isn't found? The servlet class? Is it deployed? – Dave Newton Dec 06 '11 at 19:45
  • 2
    Wrong for declaring the classes in packaged "java" – Michael Dec 06 '11 at 19:47
  • Is it the servlet class not found? or some other class? Can you set the servlet `load-on-startup` and see if it's instantiated properly? – srkavin Dec 06 '11 at 19:47
  • yes servlet class is not found. it is deployed on glassfish server... – Chinmay Dec 06 '11 at 19:47
  • Check the war file to see if the jar containing the class is available and is properly (package names, etc) packaged. – srkavin Dec 06 '11 at 19:52
  • Is it possible for you to put some stack trace from the server log, and I am not sure why you want to use java as package name I don't see that causing this problem though. – Prasanna Talakanti Dec 06 '11 at 19:54
  • i've added stack trace, i found InstantiationException too... – Chinmay Dec 06 '11 at 20:06
  • Does the war file contain the servlet class at /WEB-INF/classes/java/Welcome.class? – srkavin Dec 06 '11 at 20:07
  • Also, make sure the jar that contains filter class `org.apache.struts2.dispatcher.FilterDispatcher` is packaged in the war at /WEB-INF/lib – srkavin Dec 06 '11 at 20:09
  • WEB-INF/lib/ directory is empty – Chinmay Dec 06 '11 at 20:15
  • @Michael : what's wrong in that? – Chinmay Dec 06 '11 at 20:20
  • Are the classes loosely packaged into the WEB-INF/classes folder? The error suggests that class doesn't exist in the class-path. – srkavin Dec 06 '11 at 20:22
  • in classes directory, everything is properly packaged. – Chinmay Dec 06 '11 at 20:33
  • try this just redeploy it, I think war deployment is corrupt, If you are seeing all the classes and jar files in that are required then only thing I could think of is corrupt deployment. – Prasanna Talakanti Dec 06 '11 at 20:44
  • You have at least two issues: one, the S2 library isn't found, two, neither is yours. I suspect you're not deploying at all correctly. – Dave Newton Dec 06 '11 at 21:11
  • Are you implying that it worked in Netbeans? Are you implying that it works when the servlet is not called as welcome file, but just directly? By the way, why are you invalidating the session everytime? Why are you storing username/password plain in a cookie, hereby exposing it in public? – BalusC Dec 06 '11 at 21:19
  • @BalusC : yes the same thing worked in netbeans -> same exception is occurring even when the servlet called directly and what Welcome class doing is not matter here, the thing important here is, it's throwing ClassNotFoundException... n can u suggest me how to maintain session? i m not new to java but i've never done session mgmt... – Chinmay Dec 07 '11 at 05:47
  • @Chinmay Because the "java" package is meant for classes from the core Java API, you troll. – Michael Dec 07 '11 at 14:06

0 Answers0