You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Marco Bucciarelli <mb...@edp-progetti.it> on 2003/05/27 12:00:53 UTC

BC4J-Struts application issue: use OJSP instead of Tomcat's JspServlet

I am developing an application using Oracle Business Components For Java 9.0.3.1 and deploying this to Tomcat 4.1.18 and Tomcat4.1.24+Jboss3.2.
Some JSPs are not compiled due this exception: "java.io.IOException: Illegal to flush within a custom tag". 
There has to be some difference between the implementation of Tomcat and Oracle's OC4J of the servlet that compiles the JSPs, so I am trying to substitute the "org.apache.jasper.servlet.JspServlet" with "oracle.jsp.JspServlet" (as suggested by a user of Oracle JDeveloper Forum where I posted a thread like this).

Doing this I get in trouble with (I think) classloader problems.
I put ojsp.jar and xmlparserv2.jar in Tomcat's common/lib directory and replaced the JSP page compiler and execution servlet of Tomcat with oracle.jsp.JspServlet:

    <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>oracle.jsp.JspServlet</servlet-class>
        <init-param>
            <param-name>logVerbosityLevel</param-name>
            <param-value>WARNING</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>

When I request a jsp page, I get an exception that says that a lot of classes that reside in ojsp.jar and servlet.jar could not be imported in the class obtained from the jsp page. servlet.jar and ojsp.jar are in common/lib directory. I also tried putting ojsp.jar and xmlparserv2.jar in server/lib directory (I think those files are loaded before the files in common/lib) but the jsp page was not converted to a java servlet. 

The exception I get is this:

oracle.jsp.provider.JspCompileException: Errori di compilazione:F:\J2EE\Tomcat4\work\Standalone\localhost\emonet\_pages\_emonet\\_selezionePaziente.javaNote: sun.tools.javac.Main has been deprecated.
F:\J2EE\Tomcat4\work\Standalone\localhost\emonet\_pages\_emonet\_selezionePaziente.java:3: Package oracle.jsp.runtime not found in import.
import oracle.jsp.runtime.*;
^
F:\J2EE\Tomcat4\work\Standalone\localhost\emonet\_pages\_emonet\_selezionePaziente.java:4: Package javax.servlet not found in import.
import javax.servlet.*;
^
F:\J2EE\Tomcat4\work\Standalone\localhost\emonet\_pages\_emonet\_selezionePaziente.java:5: Package javax.servlet.http not found in import.
import javax.servlet.http.*;
^
F:\J2EE\Tomcat4\work\Standalone\localhost\emonet\_pages\_emonet\_selezionePaziente.java:6: Package javax.servlet.jsp not found in import.
import javax.servlet.jsp.*;
^
F:\J2EE\Tomcat4\work\Standalone\localhost\emonet\_pages\_emonet\_selezionePaziente.java:11: Superclass oracle.jsp.runtime.HttpJsp of class _emonet._selezionePaziente not found.
public class _selezionePaziente extends oracle.jsp.runtime.HttpJsp {
^
5 errors, 1 warning

at oracle.jsp.app.JspJavacCompiler.compile(JspJavacCompiler.java:255)
at oracle.jsp.app.JspAppLoader.reloadPage(JspAppLoader.java:1411)
at oracle.jsp.app.JspAppLoader.loadPage(JspAppLoader.java:1230)
at oracle.jsp.app.JspAppLoader.getPage(JspAppLoader.java:886)
at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:421)
at oracle.jsp.JspServlet.doDispatch(JspServlet.java:285)
at oracle.jsp.JspServlet.internalService(JspServlet.java:204)
at oracle.jsp.JspServlet.service(JspServlet.java:174)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:432)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:356)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1014)
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:417)
at org.apache.struts.action.RequestProcessor.processActionForward(RequestProcessor.java:390)
at oracle.jbo.html.struts11.BC4JRequestProcessor.processActionForward(BC4JRequestProcessor.java:98)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:271)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)
at java.lang.Thread.run(Thread.java:536)

Any idea?
Should I put/replace some other jars in the common/lib directory or somewhere else?
Is this the wrong way to substitute Tomcat's jsp compiler with another?

Thanks,
Marco.