(c) 1999, arthur andersen, llp configuring linux and servlets john ternent [email protected] (c)...

33
(c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent [email protected] (c) 1999, Arthur Andersen, LLP

Post on 19-Dec-2015

235 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Configuring Linux and Servlets

John [email protected]

(c) 1999, Arthur Andersen, LLP

Page 2: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Overview

Server-based processes Servlet architecture overview Servlet engines Installation, Configuration, and Usage

– Apache JServ– Live Software (Allaire) JRun

JDBC Servlet Futures - Tomcat, J2EE, JSP Q&A

Page 3: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Server-Side Processes

Brief overview of HTTP CGI processes Innovations – ISAPI, NSAPI, Servlets, FastCGI

Web ServerWeb Server

Business Logic Databases

FilesFiles

External Services

Page 4: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Server-Side Solutions

ISAPI/NSAPI – Proprietary delegation mechanisms for running logic in-process.

Servlets – Generic, Java-based mechanism for creating business logic.

Apache IISNetscape

Servlet Runner

Servlet Servlet Servlet Servlet

Connector ConnectorConnector

JSDK

Write Once, Run Anywhere?

YES!

Page 5: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Servlet Architecture

Common request/response HTTP model– HttpServletRequest– HttpServletResponse

Servlet lifecycle– init()– service()

• doGet()/doPost()– destroy()

Security sandbox Exception handling

Page 6: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

Our First Servlet!import java.io.PrintWriter;import javax.servlet.*;

import javax.servlet.http.*;

public class MyServlet extends HttpServlet

{

public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException

{ //need to catch ioExceptions here

res.setContentType(“text/html”);

PrintWriter out = res.getWriter();

out.println(“<HTML><BODY>”);

out.println(“<H1>Linux Rocks!</H1>”);

out.println(“<H3>Thanks for visiting from” + req.getRemoteAddr() + “!</H3>”);

out.println(“</BODY></HTML>”);

out.close();

}}

Page 7: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

Our First Servlet!

Page 8: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Servlet Engines

Plug-Ins– Apache JServ (www.apache.org)– Live Software (Allaire) JRun (www.allaire.com)– New Atlanta ServletExec (www.newatlanta.com)– IBM ServletRunner

(software.ibm.com/webservers)– WAICoolRunner (NS only –

www.gefionsoftware.com)– Others

Page 9: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Servlet Engines

Servlet-enabled Servers– O’Reilly WebSite (website.oreilly.com)– BEA Weblogic (weblogic.beasys.com)– W3C Jigsaw (www.w3.org/jigsaw)– GemStone/J (www.gemstone.com)

• Includes New Atlanta ServletExec

Page 10: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Step 1 – Get Thee a Web Server!

For most Linux users – Apache is the way to go. For some distributions, it may be wise to download

and recompile. Make sure you get at least version 1.3.6 and enable

DSO support!– compile with :

--enable-rule=SHARED_CORE

--enable-module=so

I like mine in /usr/local/apache.

Page 11: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Step 2 – Get Thee an Engine!

For Linux – either JServ or JRun is probably best choice.

JRun is commercial, but has 5-connection unlimited evaluation

JServ is free (it’s from Apache)

Page 12: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Step 3a.1 – Install JServ

gunzip/tar the downloaded file /usr/local cd /usr/local/Apache-JServ1.0 Install a Java Virtual Machine (1.1 or better)

– Tip: I’ve got various VMs from Blackdown (www.blackdown.org) and IBM (www.alphaworks.ibm.com/tech/linuxjvm) installed in /usr/local/dev and use the symbolic link /usr/local/dev/jdk to point to different directories as I need them.

Ensure an ANSI C compiler is available.

Page 13: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Step 3a.2 – Install JServ

Install the Sun Java Software Development Kit (java.sun.com/products/servlet/index.html)– Warning – You must install version 2.0 of the JSDK, not

any earlier, not any later, and not the JWSDK (confused enough?).

– I install this to /usr/local/dev/JSDK2.0.– No configuration required

Verify apache installation (http://localhost/). Verify JDK installation (>java –version) Verify Apache DSO support (>/usr/local/apache/bin/

httpd –l must show mod_so.c)

Page 14: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Step 3a.3 – Install JServ

cd /usr/local/Apache-JServ1.0 ./configure \

--prefix=/usr/local/jserv \--with-apache-install=/usr/local/apache \--with-jdk-home=/usr/local/dev/jdk \--with-jsdk=/usr/local/dev/JSDK2.0 \--disable-debugging

make install don’t just do “make”, as in instructions, or mod_jserv.so

won’t get moved to libexec

Page 15: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Step 4a.1 – Configure JServ

Servlet Zones– analogous to virtual web hosts– example zone created by default– controlled by zone.properties file– specify repositories (directories), which map to

zones Add to httpd.conf:

– Include /usr/local/ApacheJServ-1.0/example/jserv.conf

Page 16: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Step 4a.2 – Configure JServ

Configuration files:– jserv.conf : Apache/JServ integration– example/jserv.properties : General parameters and

zones– conf/zone.properties : zone repositories and

security

Page 17: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Step 4a.3 – Configure JServ Create a new zone:

– jserv.properties:• Servlet Zone parameters

– zones=example,testJServ• Configuration file for zones

– testJServ.properties=/usr/local/servlet/JServ/testJServ.properties– cp $JServ/conf/zone.properties to […]/JServ/testJServ.properties– testJServ.properties:

• repositories=/usr/local/servlet/JServ– Mount new servlet zone

• jserv.conf:• ApJSevMount /testJServ /testJServ

– Restart apache– Test servlet: http://localhost/testJServ/MyServlet

Page 18: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Step 5a – Verify JServ Installation

Restart Apache – /usr/local/apache/bin/apachectl restart

Logs will tell you if JServ is running– cat /usr/local/apache/logs/error_log– [Date] [notice] Apache/1.3.6 (Unix)

ApacheJServe/1.0 configured – resuming normal operations

http://localhost/example/Hello

Page 19: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Step 3b.1 – Install JRun

Download and tar –xzvf JRun I put it in /usr/local/jrun No additional software (JSDK) required – JRun

includes its own servlet.jar file From an X terminal session:

– /usr/local/jrun/install.sh Starts graphical install wizard (hooray!)

Page 20: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Step 3b.2 – Install JRun

Specify JRun root directory– /usr/local/jrun

Select Older JRun root directory [optional] <JRun sets up property files> Enter license key [optional] Enable CF_Anywhere [optional] Select JSP mapping {0.92 or 1.0} Select Web Server

– Apache 1.2/1.3

Page 21: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Step 3b.3 – Install JRun

Select Proxy Host and Proxy Port– 127.0.0.1 & 8081 is fine, usually

Specify JRun Service Manager– Leave as “default”

Specify Apache conf directory– /usr/local/apache/conf

DSO Support options <CAREFUL!>– Use 1.3.6 DSO

Finish (hooray again!)

Page 22: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Step 4b.1 – Configure JRun

JRun has its own visual administration tool – /usr/local/jrun/jsm-default/startadmin.sh– All commands are accessible from property files

Select Configure for jsm-default Most relevant configuration is either under jse

service or under General tab of main admin console.

Page 23: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Step 4b.2 – Configure JRun

General tab:– General JRun Service Manager Settings– Java Environment settings

• Java Executable• Java Arguments (JIT, for example)• Java Classpath (can put servlet directories in here)• Library Path (natives)• Java Security Manager

Page 24: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Step 4b.3 – Configure JRun

jse Service Config options:– General

• includes servlet directories (somewhat flaky)– Mapping

• maps extensions and paths, like /servlet or *.jsp– Aliases

• Translate packaged name to simple name– MIME Filters

• links MIME types to servlets– Multi-Home

• Maps URL hosts to different servlet directories– Session Tracking

Page 25: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Step 5b – Verify JRun Installation

Restart Apache – /usr/local/apache/bin/apachectl restart

Logs will tell you if JRun is running– cat /usr/local/apache/logs/error_log– [Date] [notice] jrApache[init] mod_jrun: JRun Connector

v2.3.148 Apache – [Release Date] Start JRun

– /usr/local/jrun/jsm-default/startjsm.sh http://localhost/servlet/SnoopServlet Stop JRun

– /usr/local/jrun/jsm-default/stopjsm.sh

Page 26: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Tips and Tricks

Know the caching policies for the servlet engine and the web server.

Watch your classpaths!– Odd things can get included unintentionally– Include servlet api – jsdk or engine-specific

Watch String concatenation problems – use StringBuffers or print to the Writer directly.

Use an HTML generation class to enforce good HTML practices. During development, use –Djava.compiler=NONE to prevent JIT

from executing. Advanced Configuration Options: Instances, Threads, Load

Balancing

Page 27: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Servlet Examples

Connect to JDBC Database Connect to CORBA Service

Page 28: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

Example 1 – JDBCimport java.io.*;

import java.sql.*;

import javax.servlet.http.*;

import javax.servlet.*;

public class TestFlush extends HttpServlet {

public void init (ServletConfig conf) throws ServletException

{

super.init(conf);

try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}

catch (ClassNotFoundException cnf) {

throw new ServletException ("Class not found");

}

}

Page 29: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

Example 1 - JDBCpublic void doGet (HttpServletRequest req, HttpServletResponse res) throws IOException

{

try {

PrintWriter out = res.getWriter();

res.setContentType("text/html");

out.println("<HTML><HEAD><H3>Test JDBC</H3></HEAD><BODY>");

out.println("<TABLE BORDER=1 WIDTH=75%>");

Connection conn = DriverManager.getConnection("jdbc:odbc:myDSN","","");

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("SELECT * FROM Table1;");

ResultSetMetaData rsm = rs.getMetaData();

out.println("<TR>");

for (int i = 1; i <= rsm.getColumnCount(); i++)

{

out.println("<TH>“ + rsm.getColumnName(i) + “</TH>");

}

out.println("</TR>");

Page 30: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

Example 1 - JDBCwhile (rs.next())

{

out.println("<TR>");

for (int i = 1; i <= rsm.getColumnCount();i++)

{

out.println("<TD>“ + rs.getString(i) + "</TD>“); }

out.println("</TR>");

}

out.println("</BODY></HTML>");

}

catch (SQLException se) {

throw new IOException("SQL Exception");

}

}

}

Page 31: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

Example 1 - JDBC

Page 32: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Futures

JSPs Tomcat J2EE WebLogic

Page 33: (c) 1999, Arthur Andersen, LLP Configuring Linux and Servlets John Ternent John@ternent.com (c) 1999, Arthur Andersen, LLP

(c) 1999, Arthur Andersen, LLP

Resources

Jason Hunter’s Java Servlet Programming (O’Reilly) and www.servlets.com

www.servletcentral.com www.javaworld.com java.sun.com/products/servlet/index.html