Oracle9i Support for JavaServer Pages Reference Release 2 (9.2) Part Number A96657-01 |
|
This chapter discusses operation of the Oracle JSP translator, then discusses the ojspc
utility and situations where pre-translation is useful, followed by general discussion of a number of additional JSP deployment considerations.
The chapter is organized as follows:
JSP translators generate standard Java code for a JSP page implementation class. This class is essentially a servlet class wrapped with features for JSP functionality.
This section discusses general functionality of the Oracle JSP translator, focusing on its behavior in on-demand translation scenarios. The following topics are covered:
This section discusses general features of the page implementation class code that is produced by the Oracle JSP translator in translating JSP source (.jsp
and .sqljsp
files).
When the Oracle JSP translator generates servlet code in the page implementation class, it automatically handles some of the standard programming overhead. For both the on-demand translation model and the pre-translation model, generated code automatically includes the following features:
oracle.jsp.runtime.HttpJsp
) provided by the Oracle JSP container that implements the standard javax.servlet.jsp.HttpJspPage
interface (which extends the more generic javax.servlet.jsp.JspPage
interface, which in turn extends the standard javax.servlet.Servlet
interface)._jspService()
method specified by the HttpJspPage
interface. This method, often referred to generically as the "service" method, is the central method of the page implementation class. Code from any Java scriptlets and expressions in the JSP page is incorporated into this method implementation.session=false
(which can be done in a page
directive).The service method, _jspService()
, of the page implementation class includes print commands--out.print()
calls on the implicit out
object--to print any static text in the JSP page. The Oracle JSP translator, however, places the static text itself in an inner class within the page implementation class. The service method out.print()
statements reference attributes of the inner class to print the text.
This inner class implementation results in an additional .class
file when the page is translated and compiled. In a client-side pre-translation scenario, be aware this means there is an extra .class
file to deploy.
The name of the inner class will always be based on the base name of the .jsp
file or .sqljsp
file. For mypage.jsp
, for example, the inner class (and its .class
file) will always include "mypage" in its name.
Note: The Oracle JSP translator can optionally place the static text in a Java resource file, which is advantageous for pages with large amounts of static text. (See "Workarounds for Large Static Content in JSP Pages".) You can request this feature through the JSP Even when static text is placed in a resource file, the inner class is still produced, and its |
The Oracle JSP translator follows a consistent set of conventions in naming output classes, packages, files and directories. However, this set of conventions and other implementation details may change from release to release.
One fact that is not subject to change is that the base name of a JSP page will be included intact in output class and file names as long as it does not include special characters. For example, translating MyPage123.jsp
will always result in the string "MyPage123" being part of the page implementation class name, Java source file name, and class file name.
In Oracle JSP 1.1.x.x releases (as well as some previous releases), the base name is preceded by an underscore ("_"). Translating MyPage123.jsp
results in page implementation class _MyPage123
in source file _MyPage123.java
, which is compiled into _MyPage123.class
.
Similarly, where path names are used in creating Java package names, each component of the path is preceded by an underscore. Translating /jspdir/myapp/MyPage123.jsp
, for example, results in class _MyPage123
being in the following package:
_jspdir._myapp
The package name is used in creating directories for output .java
and .class
files, so the underscores are also evident in output directory names. For example, in translating a JSP page in the directory htdocs/test
, the Oracle JSP translator by default will create directory htdocs/_pages/_test
for the page implementation class source.
Note: All output directories are created under the standard |
If special characters are included in a JSP page name or path name, the Oracle JSP translator takes steps to ensure that no characters that would be illegal in Java appear in the output class, package, and file names. For example, translating My-name_foo12.jsp
results in _My_2d_name__foo12
being the class name, in source file _My_2d_name__foo12.java
. The hyphen is converted to a string of alpha-numeric characters. (An extra underscore is also inserted before "foo12".) In this case, you can only be assured that alphanumeric components of the JSP page name will be included intact in the output class and file names. For example, you could search for "My", "name", or "foo12".
These conventions are demonstrated in examples provided later in this section and later in this chapter.
Although the Sun Microsystems JavaServer Pages Specification, Version 1.1 defines a uniform process for parsing and translating JSP text, it does not describe how the generated classes should be named--that is up to each JSP implementation.
This section describes how the Oracle JSP container creates package and class names when it generates code during translation.
Note: For information about general conventions used by the Oracle JSP container in naming output classes, packages, files, and schema paths, see "General Conventions for Output Names" |
In an on-demand translation scenario, the URL path that is specified when the user requests a JSP page--specifically, the path relative to the doc root or application root--determines the package name for the generated page implementation class. Each directory in the URL path represents a level of the package hierarchy.
It is important to note, however, that generated package names are always lowercase, regardless of the case in the URL.
Consider the following URL as an example:
http://host[:port]/HR/expenses/login.jsp
In Oracle JSP 1.1.x.x releases, this results in the following package specification in the generated code (implementation details are subject to change in future releases):
package _hr._expenses;
No package name is generated if the JSP page is at the doc root or application root directory, where the URL is as follows:
http://host[:port]/login.jsp
The base name of the .jsp
file (or .sqljsp
file) determines the class name in the generated code.
Consider the following URL example:
http://host[:port]/HR/expenses/UserLogin.jsp
In Oracle JSP 1.1.x.x releases, this yields the following class name in the generated code (implementation details are subject to change in future releases):
public class _UserLogin extends ...
Be aware that the case (lowercase/uppercase) that end users type in the URL must match the case of the actual .jsp
or .sqljsp
file name. For example, they can specify UserLogin.jsp
if that is the actual file name, or userlogin.jsp
if that is the actual file name, but not userlogin.jsp
if UserLogin.jsp
is the actual file name.
In Oracle JSP 1.1.x.x releases, the translator determines the case of the class name according to the case of the file name. For example:
UserLogin.jsp
results in class _UserLogin
.Userlogin.jsp
results in class _Userlogin
.userlogin.jsp
results in class _userlogin
.If you care about the case of the class name, then you must name the .jsp
file or .sqljsp
file accordingly. However, because the page implementation class is invisible to the end user, this is usually not a concern.
This section describes files that are generated by the Oracle JSP translator and where they are placed. For pre-translation scenarios, ojspc
places files differently and has its own set of relevant options--see "Summary of ojspc Output Files, Locations, and Related Options".
The following subsections mention several JSP configuration parameters. For more information about them, and about how to set them in a JServ environment, see "Oracle JSP Configuration Parameters" and "Setting JSP Parameters in JServ".
Note: For information about general conventions used by the Oracle JSP container in naming output classes, packages, files, and schema paths, see "General Conventions for Output Names" |
This section considers both regular JSP pages (.jsp
files) and SQLJ JSP pages (.sqljsp
files) in listing files that are generated by the Oracle JSP translator. For the file name examples, presume a file Foo.jsp
or Foo.sqljsp
is being translated.
Source files:
.sqlj
file is produced by the Oracle JSP translator if the page is a SQLJ JSP page (for example, _Foo.sqlj
)..java
file is produced for the page implementation class and inner class (for example, _Foo.java
). It is produced either directly by the Oracle JSP translator from the.jsp
file, or by the SQLJ translator from the.sqlj
file if the page is a SQLJ JSP page. (The currently installed Oracle SQLJ translator is used by default, but you can specify an alternative translator or an alternative release of the Oracle SQLJ translator by using the JSP sqljcmd
configuration parameter.)Binary files:
-codegen=iso
setting), one or more binary files are produced during SQLJ translation for SQLJ profiles. By default these are .ser
Java resource files, but they will be .class
files if you enable the SQLJ -ser2class
option (through the JSP sqljcmd
configuration parameter). The resource file or .class
file has "Foo" as part of its name.
.class
file is produced by the Java compiler for the page implementation class. (The Java compiler is javac
by default, but you can specify an alternative compiler using the JSP javaccmd
configuration parameter.).class
file is produced for the inner class of the page implementation class. This file will have "Foo" as part of its name..res
Java resource file is optionally produced for the static page content (for example, _Foo.res
) if the JSP external_resource
configuration parameter is enabled.
The Oracle JSP container uses the Web server document repository to generate or load translated JSP pages.
By default, the root directory is the Web server doc root directory (for JServ) or the servlet context root directory of the application the page belongs to.
You can specify an alternative root directory through the JSP page_repository_root
configuration parameter.
In Oracle JSP 1.1.x.x releases, generated files are placed as follows (implementation details may change in future releases):
.jsp
(or .sqljsp
) file is directly in the root directory, then the Oracle JSP container will place generated files into a default _pages
subdirectory directly under the root directory..jsp
(or .sqljsp
) file is in a subdirectory under the root directory, then a parallel directory structure is created under the _pages
subdirectory for the generated files. Subdirectory names under the _pages
directory are based on subdirectory names under the root directory.
As an example, consider a JServ environment with an htdocs
doc root directory. If a .jsp
file is in the following directory:
htdocs/subdir/test
then generated files will be placed in the following directory:
htdocs/_pages/_subdir/_test
This section uses an example to illustrate the information in the preceding sections.
Consider the following scenario:
hello.jsp
.hello.jsp
file is located in the following directory:
htdocs
/test
Following is the JSP code in hello.jsp
:
<HTML> <HEAD><TITLE>The Hello User JSP</TITLE></HEAD> <BODY> <% String user=request.getParameter("user"); %> <H3>Welcome <%= (user==null) ? "" : user %>!</H3> <P><B> Today is <%= new java.util.Date() %>. Have a nice day! :-)</B></P> <B>Enter name:</B> <FORM METHOD=get> <INPUT TYPE="text" NAME="user" SIZE=15> <INPUT TYPE="submit" VALUE="Submit name"> </FORM> </BODY> </HTML>
Because hello.jsp
is in the test
subdirectory of the root directory (htdocs
), Oracle JSP 1.1.x.x releases generate the following package name in the page implementation code.
package _test;
The Java class name is determined by the base name of the .jsp
file (including case), so the following class definition is generated in the page implementation code:
public class _hello extends oracle.jsp.runtime.HttpJsp { ... }
(Because the page implementation class is invisible to the end user, the fact that its name does not adhere to Java capitalization conventions is generally not a concern.)
Because hello.jsp
is located as follows:
htdocs/test/hello.jsp
Oracle JSP 1.1.x.x releases generate output files as follows (the page implementation class .java
file and .class
file, and the inner class .class
file, respectively):
htdocs/_pages/_test/_hello.java htdocs/_pages/_test/_hello.class htdocs/_pages/_test/_hello$__jsp_StaticText.class
Note: These file names are based specifically on Oracle JSP 1.1.x.x implementations; the exact details may change in future releases. All file names will always include the base "hello", however. |
Following is the generated page implementation class Java code (_hello.java
), as generated by Oracle JSP 1.1.x.x releases:
package _test; import oracle.jsp.runtime.*; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; import java.io.*; import java.util.*; import java.lang.reflect.*; import java.beans.*; public class _hello extends oracle.jsp.runtime.HttpJsp { public final String _globalsClassName = null; // ** Begin Declarations // ** End Declarations public void _jspService(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { /* set up the intrinsic variables using the pageContext goober: ** session = HttpSession ** application = ServletContext ** out = JspWriter ** page = this ** config = ServletConfig ** all session/app beans declared in globals.jsa */ JspFactory factory = JspFactory.getDefaultFactory(); PageContext pageContext = factory.getPageContext( this, request, response, null, true, JspWriter.DEFAULT_BUFFER, true); // Note: this is not emitted if the session directive == false HttpSession session = pageContext.getSession(); if (pageContext.getAttribute(OracleJspRuntime.JSP_REQUEST_REDIRECTED, PageContext.REQUEST_SCOPE) != null) { pageContext.setAttribute(OracleJspRuntime.JSP_PAGE_DONTNOTIFY, "true", PageContext.PAGE_SCOPE); factory.releasePageContext(pageContext); return; } ServletContext application = pageContext.getServletContext(); JspWriter out = pageContext.getOut(); hello page = this; ServletConfig config = pageContext.getServletConfig(); try { // global beans // end global beans out.print(__jsp_StaticText.text[0]); String user=request.getParameter("user"); out.print(__jsp_StaticText.text[1]); out.print( (user==null) ? "" : user ); out.print(__jsp_StaticText.text[2]); out.print( new java.util.Date() ); out.print(__jsp_StaticText.text[3]); out.flush(); } catch( Exception e) { try { if (out != null) out.clear(); } catch( Exception clearException) { } pageContext.handlePageException( e); } finally { if (out != null) out.close(); factory.releasePageContext(pageContext); } } private static class __jsp_StaticText { private static final char text[][]=new char[4][]; static { text[0] = "<HTML>\r\n<HEAD><TITLE>The Welcome User JSP</TITLE></HEAD>\r\n<BODY>\r\n".toCharArray(); text[1] = "\r\n<H3>Welcome ".toCharArray(); text[2] = "!</H3>\r\n<P><B> Today is ".toCharArray(); text[3] = ". Have a nice day! :-)</B></P>\r\n<B>Enter name:</B>\r\n<FORM METHOD=get>\r\n<INPUT TYPE=\"text\" NAME=\"user\" SIZE=15>\r\n<INPUT TYPE=\"submit\" VALUE=\"Submit name\">\r\n</FORM>\r\n</BODY>\r\n</HTML>".toCharArray(); } } }
This section describes the ojspc
utility, provided with Oracle9i for pre-translation, and is organized as follows:
You can use ojspc
to pre-translate JSP pages in any environment, which may be useful in saving end users the translation overhead the first time a page is executed.
If you are pre-translating in some environment other than the target environment, specify the ojspc -d
option to set an appropriate base directory for placement of generated binary files.
As an example, consider a JServ environment with the following JSP source file:
htdocs/test/foo.jsp
A user would invoke this with the following URL:
http://host[:port]/test/foo.jsp
During on-demand translation at execution time, the Oracle JSP translator would use a default base directory of htdocs/_pages
for placement of generated binary files. Therefore, if you pre-translate, you should set htdocs/_pages
as the base directory for binary output, such as in the following example (assume %
is a UNIX prompt):
% cd htdocs % ojspc -d _pages test/foo.jsp
The URL noted above specifies an application-relative path of test/foo.jsp
, so at execution time the Oracle JSP container looks for the binary files in a _test
subdirectory under the default htdocs/_pages
directory. This subdirectory would be created automatically by ojspc
if it is run as in the above example. At execution time, the Oracle JSP container would find the pre-translated binaries and would not have to perform translation, assuming that the source file was not altered after pre-translation. (By default, the page would be re-translated if the source file timestamp is later than the binary timestamp, assuming the source file is available and the bypass_source
configuration parameter is not enabled.)
The following topics are covered here:
Notes: There are other possible scenarios, such as in a middle-tier environment, for using |
For a simple JSP (not SQLJ JSP) page, default functionality for ojspc
is as follows:
.jsp
file as an argument..jsp
file into Java page implementation class code, producing a .java
file. The page implementation class includes an inner class for static page content..java
file, producing two .class
files (one for the page implementation class itself and one for the inner class).And following is the default ojspc
functionality for a SQLJ JSP page:
.sqljsp
file as an argument instead of a .jsp
file..sqljsp
file into a .sqlj
file for the page implementation class (and inner class)..sqlj
file. This produces a .java
file for the page implementation class (and inner class). Also, if you use ISO standard SQLJ code generation (SQLJ -codegen=iso
setting), a SQLJ "profile" file is produced that is, by default, a .ser
Java resource file.
Note: No profiles are produced if you use Oracle-specific SQLJ code generation (SQLJ |
For information about SQLJ profiles and Oracle-specific code generation, see the Oracle9i SQLJ Developer's Guide and Reference.
.java
file, producing two .class
files (one for the page implementation class itself and one for the inner class).Under some circumstances (see the -extres
option description below), ojspc
settings direct the Oracle JSP translator to produce a .res
Java resource file for static page content instead of putting this content into the inner class of the page implementation class. However, the inner class is still created and must still be deployed with the page implementation class.
Because ojspc
invokes the Oracle JSP translator, ojspc
output conventions are the same as for the Oracle JSP container in general, as applicable. For general information about Oracle JSP translator output, including generated code features, general conventions for output names, generated package and class names, and generated files and locations, see "Functionality of the Oracle JSP Translator".
Note: The |
Table 6-1 describes the options supported by the ojspc
pre-translation utility. These options are further discussed in "Option Descriptions for ojspc".
The second column notes comparable or related JSP configuration parameters for on-demand translation environments (such as JServ).
Following is the general ojspc
command-line syntax (assume %
is a UNIX prompt):
% ojspc [option_settings] file_list
The file list can include .jsp
files or .sqljsp
files.
Be aware of the following syntax notes:
.jsp
files are translated, they all must use the same character set (either by default or through page
directive contentType
settings).-extres
, not -extres true
.)Following is an example:
% ojspc -d /myapp/mybindir -srcdir /myapp/mysrcdir -extres MyPage.sqljsp MyPage2.jsp
This section describes the ojspc
options in more detail.
(fully qualified path; ojspc
default: empty)
Use this option to specify additional classpath entries for javac
to use when compiling generated page implementation class source. Otherwise, javac
uses only the system classpath.
Notes:
|
(fully qualified path; ojspc
default: current directory)
Use this option to specify an application root directory. The default is the current directory, from which ojspc
was run.
The specified application root directory path is used as follows:
include
directives in the page being translated. The specified directory path is prepended to any application-relative (context-relative) paths in the include
directives of the translated page.This option is necessary, for example, so included files can still be found if you run ojspc
from some other directory.
Consider the following example.
/abc/def/ghi/test.jsp
ojspc
from the current directory, /abc
, as follows (assume %
is a UNIX prompt):
% cd /abc % ojspc def/ghi/test.jsp
test.jsp
page has the following include
directive:
<%@ include file="/test2.jsp" %>
test2.jsp
page is in the /abc
directory, as follows:
/abc/test2.jsp
This requires no -appRoot
setting, because the default application root setting is the current directory, which is the /abc
directory. The include
directive uses the application-relative /test2.jsp
syntax (note the beginning "/"), so the included page will be found as /abc/test2.jsp
.
The package in this case is _def._ghi
, based on the location of test.jsp
relative to the current directory, from which ojspc
was run (the current directory is the default application root). Output files are placed accordingly.
If, however, you run ojspc
from some other directory, suppose /home/mydir
, then you would need an -appRoot
setting as in the following example:
% cd /home/mydir % ojspc -appRoot /abc /abc/def/ghi/test.jsp
The package is still _def._ghi
, based on the location of test.jsp
relative to the specified application root directory.
Note: It is typical for the specified application root directory to be some level of parent directory of the directory where the translated JSP page is located. |
(fully qualified path; ojspc
default: current directory)
Use this option to specify a base directory for ojspc
placement of generated binary files--.class
files and Java resource files. (The .res
files produced for static content by the -extres
option are Java resource files, as are .ser
profile files produced by the SQLJ translator for SQLJ JSP pages.)
The specified path is taken simply as a file system path (not an application-relative or page-relative path).
Subdirectories under the specified directory are created automatically, as appropriate, depending on the package. See "Summary of ojspc Output Files, Locations, and Related Options" for more information.
The default is to use the current directory (your current directory when you executed ojspc
).
It is recommended that you use this option to place generated binary files into a clean directory so that you easily know what files have been produced.
Notes:
|
(boolean; ojspc
default: false
)
Enable this flag to instruct ojspc
to generate a line map to the original .jsp
file for debugging. Otherwise, line-mapping will be to the generated page implementation class.
This is useful for source-level JSP debugging, such as when using Oracle9i JDeveloper.
Note: In an on-demand translation scenario, the JSP |
(fully qualified Java class name; ojspc
default: empty)
Use this option to specify a Java class that the generated page implementation class will extend.
(boolean; ojspc
default: false
)
Enable this flag to instruct ojspc
to place generated static content (the Java print commands that output static HTML code) into a Java resource file instead of into an inner class of the generated page implementation class.
The resource file name is based on the JSP page name. For Oracle JSP 1.1.x.x releases, it will be the same core name as the JSP name (unless special characters are included in the JSP name), but with an underscore ("_") prefix and .res
suffix. Translation of MyPage.jsp
, for example, would create _MyPage.res
in addition to normal output. The exact implementation for name generation may change in future releases, however.
The resource file is placed in the same directory as .class
files.
If there is a lot of static content in a page, this technique will speed translation and may speed execution of the page. For more information, see "Workarounds for Large Static Content in JSP Pages".
Notes:
|
(fully qualified Java interface name; ojspc
default: empty)
Use this option to specify a Java interface that the generated page implementation class will implement.
(boolean; ojspc
default: false
)
Enable this flag to direct ojspc
not to compile the generated page implementation class Java source. This allows you to compile it later with an alternative Java compiler.
Notes:
|
(fully qualified package name; ojspc
default: per .jsp
file location)
Use this option to specify a package name for the generated page implementation class, using Java "dot" syntax.
Without setting this option, the package name is determined according to the location of the .jsp
file relative to the current directory (from which you ran ojspc
).
Consider an example where you run ojspc
from the /myapproot
directory, while the .jsp
file is in the /myapproot/src/jspsrc
directory (assume %
is a UNIX prompt):
% cd /myapproot % ojspc -packageName myroot.mypackage src/jspsrc/Foo.jsp
This results in myroot.mypackage
being used as the package name.
If this example did not use the -packageName
option, Oracle JSP 1.1.x.x releases would use _src._jspsrc
as the package name, by default. (Be aware that such implementation details are subject to change in future releases.)
(-S
followed by SQLJ option setting; ojspc
default: empty)
For SQLJ JSP pages, use the ojspc
-S
option to pass an Oracle SQLJ option to the SQLJ translator. You can use multiple occurrences of -S
, with one SQLJ option per occurrence.
Unlike when you run the SQLJ translator directly, use a space between a SQLJ option and its value (this is for consistency with other ojspc
options).
For example (from a UNIX prompt):
% ojspc -S-codegen iso -d /myapproot/mybindir MyPage.jsp
This directs SQLJ to generate ISO standard code instead of the default Oracle-specific code.
Here is another example:
% ojspc -S-codegen iso -S-ser2class true -d /myapproot/mybindir MyPage.jsp
This again directs SQLJ to generate ISO standard code, and also enables the -ser2class
option to convert the profile to a .class
file.
Note the following for particular Oracle SQLJ options:
-encoding
option; instead, use the contentType
parameter in a page
directive in the JSP page.-classpath
option if you use the ojspc -addclasspath
option.-compile
option if you use the ojspc -noCompile
option.-d
option if you use the ojspc
-d
option.-dir
option if you use the ojspc -srcdir
option.For information about Oracle SQLJ translator options, see the Oracle9i SQLJ Developer's Guide and Reference.
Note: In an on-demand translation scenario, the JSP |
(fully qualified path; ojspc
default: current directory)
Use this option to specify a base directory location for ojspc
placement of generated source files--.sqlj
files (for SQLJ JSP pages) and .java
files.
The specified path is taken simply as a file system path (not an application-relative or page-relative path).
Subdirectories under the specified directory are created automatically, as appropriate, depending on the package. See "Summary of ojspc Output Files, Locations, and Related Options" for more information.
The default is to use the current directory (your current directory when you executed ojspc
).
It is recommended that you use this option to place generated source files into a clean directory so that you conveniently know what files have been produced.
Notes:
|
(boolean; ojspc
default: false
)
Enable this option to direct ojspc
to report its translation steps as it executes.
The following example shows -verbose
output for the translation of myerror.jsp
(in this example, ojspc
is run from the directory where myerror.jsp
is located; assume %
is a UNIX prompt):
% ojspc -verbose myerror.jsp Translating file: myerror.jsp 1 JSP files translated successfully. Compiling Java file: ./_myerror.java
(boolean; ojspc
default: false
)
Enable this option for ojspc
to display the Oracle JSP version number and then exit.
By default, ojspc
generates the same set of files that are generated by the Oracle JSP translator in an on-demand translation scenario and places them in or under the current directory (from which ojspc
was executed).
Here are the files:
.sqlj
source file (SQLJ JSP pages only).java
source file.class
file for the page implementation class.class
file for the inner class for static text.ser
) or, optionally, a .class
file for the SQLJ profile (SQLJ JSP pages only)
This assumes standard SQLJ code generation. Oracle-specific SQLJ code generation produces no profiles.
.res
) for the static text of the pageFor more information about files that are generated by the Oracle JSP translator, see "Generated Files and Locations (On-Demand Translation)".
To summarize some of the commonly used options described under "Option Descriptions for ojspc", you can use the following ojspc
options to affect file generation and placement:
-appRoot
to specify an application root directory-srcdir
to place source files in a specified alternative location-d
to place binary files (.class
files and Java resource files) in a specified alternative location-noCompile
to not compile the generated page implementation class source (as a result of this, no .class
files are produced)
In the case of SQLJ JSP pages, translated .java
files are still produced, but not compiled.
-extres
to put static text into a Java resource file-S-ser2class
(SQLJ -ser2class
option, for SQLJ JSP pages only, and for ISO standard SQLJ code generation only) to generate the SQLJ profile in a .class
file instead of a .ser
Java resource fileFor output file placement, the directory structure underneath the current directory (or directories specified by the -d
and -srcdir
options, as applicable) is based on the package. The package is based on the location of the file being translated relative to the application root, which is either the current directory or the directory specified in the -appRoot
option.
For example, presume you run ojspc
as follows (presume %
is a UNIX prompt):
% cd /abc % ojspc def/ghi/test.jsp
Then the package is _def._ghi
and output files will be placed in the directory /abc/_def/_ghi
, where the _def/_ghi
subdirectory structure is created as part of the process.
If you specify alternate output locations through the -d
and -srcdir
options, a _def/_ghi
subdirectory structure is created under the specified directories.
Now presume ojspc
is run from some other directory, as follows:
% cd /home/mydir % ojspc -appRoot /abc /abc/def/ghi/test.jsp
The package is still _def._ghi
, according to the location of test.jsp
relative to the specified application root. Output files will be placed in the directory /home/mydir/_def/_ghi
or in a _def/_ghi
subdirectory under locations specified through the -d
and -srcdir
options. In either case, the _def/_ghi
subdirectory structure is created as part of the process.
Notes: It is advisable that you run |
This section covers a variety of general deployment considerations and scenarios, mostly independent of your target environment.
The following topics are covered:
In an on-demand translation environment, it is possible to specify JSP pre-translation only, without execution, by enabling the standard jsp_precompile
request parameter when invoking the JSP page from the end user's browser.
Following is an example:
http://host[:port]/foo.jsp?jsp_precompile
Refer to the Sun Microsystems JavaServer Pages Specification, Version 1.1, for more information.
If your JSP source is proprietary, you can avoid exposing the source by pre-translating JSP pages and deploying only the translated and compiled binary files. Pages that are pre-translated, either from previous execution in an on-demand translation scenario or by using ojspc
, can be deployed to any environment that supports the Oracle JSP container. There are two aspects to this scenario:
.jsp
(or .sqljsp
) source is not available.After JSP pages have been translated, archive the directory structure and contents that are under the binary output directory, then copy the directory structure and contents to the target environment, as appropriate. For example:
ojspc
, you should specify a binary output directory with the ojspc -d
option, then archive the directory structure under that specified directory.htdocs/_pages
directory.In the target environment, restore the archived directory structure under the appropriate directory, such as under the htdocs/_pages
directory in a JServ environment.
Set JSP configuration parameters as follows to execute JSP pages when the .jsp
or .sqljsp
source is unavailable:
Without these settings, the Oracle JSP container will always look for the .jsp
or .sqljsp
file to see if it has been modified more recently than the page implementation .class
file, and abort with a "file not found" error if it cannot find the .jsp
or .sqljsp
file.
With these parameters set appropriately, the end user can invoke a page with the same URL that would be used if the source file were in place. For an example, consider a JServ environment--if the binary files for foo.jsp
are in the htdocs/_pages/_test
directory, then the page can be invoked with the following URL without foo.jsp
being present:
http://host:[port]/test/foo.jsp
For how to set configuration parameters in a JServ environment, see "Setting JSP Parameters in JServ".
Oracle9i JDeveloper release 3.1 and higher includes a deployment option, "Web Application to Web Server", that was added specifically for JSP applications.
This option generates a deployment profile that specifies the following:
The developer can either deploy the application immediately upon creating the profile, or save the profile for later use.
JSP pages and servlets running in the JServ environment supplied with Oracle9i, which are routed through the Apache mod_jserv
module provided with JServ, use the Apache doc root. This doc root (typically htdocs
) is set in the DocumentRoot
command of the Apache httpd.conf
configuration file.
For JSP pages running in JServ, JSP pages as well as static files are located in or under the doc root.
Note: For an overview of the role of the Oracle HTTP Server and its |
|
Copyright © 2000, 2002 Oracle Corporation. All Rights Reserved. |
|