'ClassNotFoundException: org.apache.axis2.transport.http.AxisAdminServlet

I am developing a web portal using tomcat 7 + ZK framework + axis2 for using web services. After a while I started getting this error :

SEVERE: Servlet /twigo threw load() exception
java.lang.ClassNotFoundException: org.apache.axis2.transport.http.AxisAdminServlet
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:133)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1137)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1081)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5027)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Maybe axis2 1.6 isn't compatible with tomcat 7 ?



Solution 1:[1]

This is a strange problem, even after adding all the jars of Apache Axis2 annoying exception is still there. Required class AxisAdminServlet is not present in Axis2 libs(1.6.1 in my case). Since its nomore there in framework itself i guess its no longer required, so i removed it from my code.

You can get rid of this inside web.xml where call is placed for the servlet.

web.xml snapshot

Solution 2:[2]

There may be below entry in the web.xml

<display-name>Apache-Axis Admin Servlet Web Admin</display-name>
    <servlet-name>AxisAdminServlet</servlet-name>
    <servlet-class>org.apache.axis2.transport.http.AxisAdminServlet</servlet-class>
    <load-on-startup>100</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>AxisAdminServlet</servlet-name>
    <url-pattern>/axis2-admin/*</url-pattern>
  </servlet-mapping>

If so, please remove this entry from web.xml which solves the problem.

Regards, Kishore

Solution 3:[3]

There are differences from axis2 different releases! In the axis2 v1.8.0 the web.xml files contains these rows:

<servlet>
    <display-name>Apache-Axis Servlet</display-name>
    <servlet-name>AxisServlet</servlet-name>
    <servlet-class>org.apache.axis2.webapp.AxisAdminServlet</servlet-class>
</servlet>
<servlet>
    <display-name>Apache-Axis Admin Servlet Web Admin</display-name>
    <servlet-name>AxisAdminServlet</servlet-name>
    <servlet-class>org.apache.axis2.transport.http.AxisAdminServlet</servlet-class>
    <load-on-startup>100</load-on-startup>
</servlet>

The axis2 libraries must contains those packages/classes shown at tag servlet-class

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 aish
Solution 2 Kishore Kumar Karanam
Solution 3 R.Agostino.73