I have migrated my application from WAS 6 to WAS 7. The code is not showing any compilation error or missing anything, but when I am trying to run the application, I get following exception.
[9/19/12 9:45:37:609 EDT] 00000009 extension W com.ibm.wsspi.webcontainer.extension.WebExtensionProcessor createServletWrapper Servlet action is currently unavailable: SRVE0203E: Servlet [action]: com.ibm.services.tools.citrus.ctl.ActionServlet was found, but is missing another required class.
SRVE0206E: This error typically implies that the servlet was originally compiled with classes which cannot be located by the server.
So I checked the ffdc exception trace and I found out following exception. I have include all the jar which were referred by the old configuration.
[9/19/12 9:26:53:328 EDT] FFDC Exception:javax.servlet.UnavailableException SourceId:com.ibm.ws.webcontainer.webapp.WebApp.handleError ProbeId:912 Reporter:com.ibm.ws.webcontainer.webapp.WebAppImpl@475c475c
javax.servlet.UnavailableException: SRVE0203E: Servlet [action]: com.ibm.services.tools.citrus.ctl.ActionServlet was found, but is missing another required class.
SRVE0206E: This error typically implies that the servlet was originally compiled with classes which cannot be located by the server.
SRVE0187E: Check your class path to ensure that all classes required by the servlet are present.SRVE0210I: This problem can be debugged by recompiling the servlet using only the classes in the application's runtime class path
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:534)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:179)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:354)
at com.ibm.ws.webcontainer.webapp.WebApp.sendError(WebApp.java:3369)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3968)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:931)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1583)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1604)
And I want to understand what is the mean by this problem can be debugged by recompiling the servlet using only the classes in the application's runtime class path.
The error indicates that your servlet is importing or is otherwise dependent on classes which are no longer available after the upgrade. Since the exception does not name the class which is missing, WAS suggests that you compile your app against the WAS 7 libraries. If you do this, the compiler will tell you which dependent class is missing. You are probably compiling against WAS 6, or some other libraries, which is why the error is delayed until runtime.