Sun Java System Web Server 7.0 Update 4 Developer's Guide

Chapter 1 Technology Overview

This chapter summarizes the various APIs and programming technologies supported by Web Server.

This chapter has the following sections:

Sun Java System Web Server Architecture

Web Server incorporates a modular architecture that integrates seamlessly with all products in the Sun Java TM System family of servers. In addition, Web Server supports a variety of APIs and programming technologies that enable you to do the following:

Sun Java System Web Server includes a number of software modules, which are discussed in the following topics in this section:

Content Engines

Web Server content engines are designed for manipulating customer data. The following three content engines make up the Web Publishing layer of the Sun Java System Web Server architecture:

The HTTP engine represents the core of Sun Java System Web Server. The Web Server architecture resides on top of this engine for performance and integration functionality.

The Content Handling engine enables you to manage your server’s content. You can create and store HTML pages, JavaServer Pages files JSP™, and other files such as graphics, text, sound, or video on your server. When clients connect to your server they can view your files provided they have access.

The Search engine enables Web Server users to search the contents and attributes of documents on the server. As a server administrator, you can create a customized text search interface that works with various types of document formats. Web Server converts many types of non-HTML documents into HTML as it indexes them, so users can use a web browser to view the documents that are found for their search.

Server Extensions

Web Server extensions enable you to extend or replace the function of the server to better suit your business operations. The following server extensions are part of the core Web Server architecture:

Common Gateway Interface (CGI) is a stand-alone application development interface that enables you to create programs that process your client requests dynamically.

Netscape Server Application Programming Interface (NSAPI) implements the functions and server calls when processing a request. Server Application Functions or SAFs these functions, provide the core and extended functionality of Web Server. They enable the server to process requests and divide the requests into small steps that can be arranged in a variety of ways for speed and flexible configuration.

Java servlets and JavaServer Pages extensions enable all servlet and JSP meta functions, including instantiation, initialization, destruction, access from other components, and configuration management. Servlets and JSP files are reusable Java applications that run on a web server rather than in a web browser.

Runtime Environments

Web Server includes a set of runtime environments that support the server extensions. These runtime environments include the following:

Application Services

The Web Server architecture includes a set of application services for various application-specific functions. These application services include the following:

Configuration Files

You can configure the Web Server using the Administration user interfaces (UI) or through CLI. Most of the configuration files are in the directory install_dir/https-instance/config directory. For example, if Web Server is installed on a Windows machine in C:\Program Files\Sun\WebServer7, the configuration files for the server myserver.com are in:

C:\Program Files\Sun\WebServer7\https-myserver.com\config

The main configuration files are magnus.conf, server.xml, obj.conf, and mime.types. For more information about configuration files, see the Sun Java System Web Server 7.0 Update 4 Administrator’s Configuration File Reference.

Sun Java System Web Server 7.0 APIs

This section summarizes the various APIs and programming technologies supported by Web Server, and describes how to get more information about them.

Enable you to dynamically generate responses or parts of responses to requests. The APIs and programming approaches are described in the following sections:

To modify the content of the server by adding, removing, or modifying resources and directories, use remote file manipulation.

Server-Parsed HTML Tags

Web Server provides a C API for defining your own server-side tags. These tags can be used in addition to the standard server-side tags (such as config, include, and so on) in HTML files.

For more information about defining and using server-parsed tags, see Chapter 2, Server-Parsed HTML Tags.

CGI Programs

Common Gateway Interface (CGI) programs run on the server and generate a response to return to the requesting client. CGI programs can be written in the C, C++, Java, and Perl languages and as shell scripts. CGI programs are invoked through URL invocation.

Web Server complies with the version 1.1 CGI specification.

For more information about using CGI with Web Server, see Chapter 2, Server-Parsed HTML Tags

Java Servlets and JavaServer Pages (JSP) Support

Web Server supports the Java Servlet 2.4 specification, including web application and the JavaServer Pages (JSP) 2.0 specification.

Java servlets are server-side Java programs that can be used to generate dynamic content in response to client requests in much the same way as CGI programs. Servlets are accessed through URL invocation.

You create servlets using the Java Servlets API. Web Server includes all of the files necessary for developing and running Java servlets.

For information about using the Java Servlet API, see the documentation from Sun at http://java.sun.com/products/servlet/index.jsp.

A JSP page is a page that can be viewed in a web browser, much like an HTML page. However, in addition to HTML tags, it can include a set of JSP tags and directives mixed with Java code that extend the ability of the web page designer to incorporate dynamic content in a page. These additional features provide functionality such as displaying property values and using simple conditionals.

For more information about creating web applications that use servlets and JSP files on Web Server, see the Sun Java System Web Server 7.0 Update 4 Developer’s Guide to Java Web Applications.

For more information about using JavaServer Page files, see the documentation from Sun at http://java.sun.com/products/jsp/index.jsp.

NSAPI Plug-ins

Netscape Server Application Programming Interface (NSAPI) is a set of C functions for implementing extensions to the server. These extensions are known as server plug-ins.

Using NSAPI, you can write plug-ins and filters to extend the functionality of Web Server. An NSAPI plug-in defines one or more Server Application Functions (SAFs). You can develop SAFs for implementing custom authorization, custom logging, and other modifications to how Sun Java System Web Server handles requests. For more information, see the Sun Java System Web Server 7.0 Update 4 NSAPI Developer’s Guide.

The file obj.conf contains instructions (known as directives) that tell the server how to process requests received from clients. Each instruction is enacted either during server initialization or during a particular stage of the request-handling process. Each instruction invokes a SAF.

For example, the following instruction is invoked when the request method is GET and the requested resource is of type text/html. This instruction calls the append-trailer function with a trailer argument of <H4><font color=green>Served by 7.0</font></H4>. The append-trailer function returns the requested resource to the client, in this case an HTML file, and appends the given trailer to it.


Service method=GET type="text/html" fn=append-trailer trailer=
                              "<H4><font color=green>Served by 7.0</font></H4>"

Web Server has a set of predefined SAFs. It also has a library of NSAPI functions for developing your own SAFs to modify the way the server handles requests. For more information about predefined SAFs, see the Sun Java System Web Server 7.0 Update 4 Administrator’s Configuration File Reference . For more information about custom SAFs, see the Sun Java System Web Server 7.0 Update 4 NSAPI Developer’s Guide.


Note –

The obj.conf file is essential for the operation of the server. If this file does not exist, the server cannot access instructions for how to handle requests. When defining new SAFs, include the header function nsapi.h (which is in install_dir/include) to have access to all NSAPI functions.


Installing NSAPI Plug-ins

To load new NSAPI plugins containing customized SAFs into the server, add an Init directive to magnus.conf to load the shared library file that defines the new SAFs. This directive must call the load-modules function, which takes the following arguments:

See the Sun Java System Web Server 7.0 Update 4 NSAPI Developer’s Guide for more information about the following topics:

Access Control API

The Access Control API is a C API that enables you to programmatically control the access privileges on Web Server.

Access control lists (ACLs) determine the access privileges to the resources on the server. Each ACL contains a list of access control entries. The following access control entry, for example, specifies that all access is denied to everyone for any resource having a URI that starts with /private.


acl "uri=/private/*";
deny (all)
(user = "anyone");

         

ProcedureTo Create an ACL

  1. Login to Admin Console

  2. From the Common Task screen select the configuration from the drop-down list and click Edit Configurations tab.

  3. Click the Access Control tab in the configuration screen.

  4. Click the Access Control Lists (ACL) tab in the Authentication Databases screen.

  5. Click New to create an ACL.

    The default access control list resides in the directory install_dir/admin-server/config. The default ACL file is default.acl.

    With Web Server you can configure and reference multiple ACL files. For more information about configuring ACL files for virtual servers, see the Sun Java System Web Server 7.0 Update 4 Administrator’s Guide.

    You can use the Access Control API to manipulate ACLs, read and write ACL files, and evaluate and test access to resources on the server.

    You can also define your own attributes for authentication. The following example shows how you could authenticate users based on an e-mail address or on the URL that referred them to the resource:

    allow (read) referrer="*www.acme.com*"

    You can also authenticate the client based on your own authentication methods and databases.

Registering New Authentication Services

You must define your own Loadable Authentication Service (LAS), which is an NSAPI plug-in in order for the server to use your attributes for authentication. Load this plug-in into the server manner by adding the following directives to magnus.conf:

Certificate-Mapping API

The Certificate-Mapping API consists of data structures and functions used to manage certificate mapping.

When a user authenticates to the Web Server by sending a client certificate, the server uses information in the certificate to search the user directory for the user’s entry.

You can configure some parts of this process by editing the certmap.conf file. This file specifies the following:

API Summary

The following table lists the APIs available in Web Server.

Table 1–1 APIs Available in Web Server

API/Interface/Protocol  

Language  

Documentation  

Interfaces for Generating Dynamic Content

 

 

Custom Server-parsed HTML Tags 

Chapter 2, Server-Parsed HTML Tags

Java Servlets 

Java 

About Servlets in Sun Java System Web Server 7.0 Update 4 Developer’s Guide to Java Web Applications

JavaServer Pages 

HTML with additional JSP tags 

Introducing JSPs in Sun Java System Web Server 7.0 Update 4 Developer’s Guide to Java Web Applications

CGI (one process per request) 

C, C++, Perl, shell, and other languages 

The Common Gateway Interface: http://hoohoo.ncsa.uiuc.edu/cgi/overview.html

APIs for Writing ServerPlugins

   

NSAPI (in-process shared object/DLL) 

C, C++ 

Sun Java System Web Server 7.0 Update 4 NSAPI Developer’s Guide

Changes From Previous Versions

Changes from previous versions of Web Server are summarized in this section.

API Changes Since iPlanet Web Server 3.0

API Changes Since iPlanet Web Server 4.0

API Changes Since iPlanet Web Server 4.1

API Changes Since Sun ONE Web Server 6.0

API Changes Since Sun Java System Web Server 6.1