Mike
Mike

Reputation: 1899

javax.servlet.UnavailableException after an upgrade to WAS 7

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.

Upvotes: 4

Views: 17413

Answers (3)

Madhu
Madhu

Reputation: 231

Followed below steps which solved the issue:

1.Pointed JRE and server versions to java 8. i.e, The version under Window -> Preferences -> Java -> Installed JREs version and runtime environment of WAS server should be same. 2.Then rebuilt the ears, redeployed these ears on server, after this I am able to run the application

Upvotes: 0

Hridesh
Hridesh

Reputation: 71

Following may be reason for same issue.

  1. Used libraries/jar is not compatible for ur java version on which application is build.
  2. In my case, i had use two utility.jar(for others may be any other jars) one is build with compatible and one is build with higher version. Solved: When removed higher version jar.

Upvotes: 0

Alexander Torstling
Alexander Torstling

Reputation: 18908

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.

Upvotes: 1

Related Questions