RE: Problems in installing and deploying Apache soap

"Joe Brown" <[email protected]> Wed, 25 Feb 2004 12:14:34 -0500
Newsgroups gmane.text.xml.soap.devel
Message-ID <[email protected]>
Dibor,

I am including some instructions for installing soap.

If this isn't helpful, let me know.

Place all files in same folder and open index.html

Joe Brown
  -----Original Message-----
  From: Secka-Jallow, Dibor [mailto:[email protected]]
  Sent: Wednesday, February 25, 2004 11:24 AM
  To: [email protected]
  Subject: RE: Problems in installing and deploying Apache soap


  How did you install Apache soap?    Where did you put your code?



  Thanks

  Dibor Secka-Jallow

  Web Developer

  Atlanta Housing Authority

  [email protected]

  404-817-7370

  -----Original Message-----
  From: [email protected]
[mailto:[email protected]]
  Sent: Wednesday, February 25, 2004 11:20 AM
  To: [email protected]
  Subject: RE: Problems in installing and deploying Apache soap





  Hi,



  "I cannot find any of the classes to import to be able to compile my code"



  ð      I'm also using Apache SOAP and had any problems concerning
compiling

  ð      They should be in some .jars (Don't remember any more)



  -----Original Message-----
  From: Secka-Jallow, Dibor [mailto:[email protected]]
  Sent: 25. helmikuuta 2004 18:12
  To: [email protected]
  Subject: Problems in installing and deploying Apache soap



  I need some help or points to the right direction. I have installed Apache
soap. I cannot find any of the classes to import to be able to compile my
code.  I am trying to create a web service to receive files and send an
email to the clients.   Can I do the coding in Jdeveloper and import the
classes?  How do I deploy the Apache soap web service to my Oracle 9ias
Application running OC4J and oracle portal??



  I subscribe to the soap user and soap dev. Any message I send comes back
with this :

  Hi! This is the ezmlm program. I'm managing the [email protected]
mailing list.



  Sorry, that message is not in the archive.







  Thanks



  Dibor Secka-Jallow

  Web Developer

  Atlanta Housing Authority

  [email protected]

  404-817-7370
FAQ_Tomcat_SOAP_SSL.html (text/html, 22.8 KB)
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="subject" content="Apache SOAP and SMTP">
   <meta name="GENERATOR" content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]">
   <title>Setting up Apache Tomcat and SOAP for SSL communication</title>
<!-- saved from url=(0022)http://internet.e-mail -->
<style type="text/css">

	<!--

	H1 { font-family : Arial, Helvetica; font-size : 14pt }

	H2 { font-family : Arial, Helvetica; font-style: italic; font-size : 12pt }

	H3 { font-family : Arial, Helvetica; font-size : 10pt }

	CODE {  font-family : Courier New, Courier; font-size : 9pt; color : #0000ff }

	PRE {  font-family : Courier New, Courier; font-size : 9pt; color : #0000ff }

	-->

	</style>
</head>
<body link="#0000FF" vlink="#800080">

<h1>
Setting up Apache Tomcat and a Simple Apache SOAP Client for SSL Communication.</h1>

<h3>
By <a href="mailto:[email protected]">Peter Glynn</a> and <a href="mailto:[email protected]">Darrell
Drake</a>, with minor updates by <a href="mailto:[email protected]">Jonathan
Chawke</a>, April 2001.</h3>

<h2>
Introduction</h2>
This document gives steps involved in setting up Apache Tomcat and a simple
Apache SOAP client for <a href="http://developer.netscape.com/docs/manuals/security/sslin/contents.htm">SSL</a>
communication.
<br>The aim of this document is to allow a person with minimum Java security
to be able to set up SSL connection in a Apache SOAP/Tomcat Application.
The steps you will carry out are:
<ol TYPE="1">
<li>
Install the Java Secure Socket Extensions (JSSE) package (available from
Sun).</li>

<li>
Generate Client and Server Certificates for SSL communication.</li>

<ol TYPE="a">
<li>
Generate a Server Key and Certificate</li>

<li>
Export the Server Certificate</li>

<li>
Generate a Client Key and Certificate</li>

<li>
Export the Client Certificate</li>

<li>
Import the Certificates into the Keystores</li>
</ol>

<li>
Set up Tomcat for SSL Communication</li>

<li>
Modify the SOAP Client to use SSL</li>
</ol>
Also included in this document is:
<ul>
<li>
A short tutorial on creating X.509 Certificate Chains</li>

<li>
A section on troubleshooting SOAP and SSL installations</li>
</ul>

<h2>
Assumptions</h2>
It is assumed that you have installed <a href="http://xml.apache.org/soap">Apache
SOAP</a> and <a href="http://jakarta.apache.org/tomcat/">Apache Tomcat</a>,
and that the sample SOAP applications are working.
<h2>
Tools needed for Installation</h2>

<ul>
<li>
Apache SOAP – download at <a href="http://xml.apache.org/dist/soap/">http://xml.apache.org/dist/soap/</a></li>

<li>
Java (tm) Secure Socket Extension (JSSE) 1.0.2 (jsse1.0.2) – download at
<a href="http://java.sun.com/products/jsse/">http://java.sun.com/products/jsse/</a>
(free registration required)</li>
</ul>

<h2>
Step 1: Install JSSE</h2>

<ul>
<li>
Before you do anything, <b>read</b> the installation instructions for JSSE!
(they are available online at: <a href="http://java.sun.com/products/jsse/install.html">http://java.sun.com/products/jsse/install.html</a>).</li>

<li>
Add the JSSE jars to your classpath. This should hopefully add it to the
classpath of your Tomcat server. If not, add it to the classpath of the
Tomcat server or just copy the JSSE jar files to the lib directory of Tomcat
(e.g. <tt>C:\jakarta-tomcat-3.2.1\lib</tt>). This will automatically load
on start-up of Tomcat.</li>

<br>The JSSE 1.0.2 jars that you need in your classpath are:
<ul>
<li>
<tt>jsse.jar</tt></li>

<li>
<tt>jcert.jar</tt></li>

<li>
<tt>jnet.jar</tt></li>
</ul>
</ul>

<h2>
Step 2: Generate Client and Server Certificates</h2>
It is necessary to generate a Certificate for the client and the server.
These Certificates are then imported into a keystore, to which the client
and server connect.
<br>The keystore acts as a database for security certificates.
<br>You are going to use the <tt>keytool</tt> utility in the JDK to do
these tasks (see <a href="http://java.sun.com/products/jdk/1.2/docs/tooldocs/solaris/keytool.html">Sun's
documentation</a> for more information on this tool).
<h3>
Step 2a: Generate a Server Key and Certificate</h3>
Launch <tt>keytool</tt> from a shell (or command prompt) to generate your
public and private key.
<br>Note that the Certificate and keystore files will be generated in the
directory you run <tt>keytool</tt> from.
<p>Use <tt>keytool</tt> as follows:
<br><tt>keytool -genkey -alias tomcat-sv -dname "CN=[Common Name],OU=[Organisation
Unit], O=[Organisation Name], L=[Locality], S=[State Name], C=[Two-Letter
Country Code]" -keyalg RSA -keypass [private key password] -storepass [keystore
password] -keystore [keystore file name]</tt>
<p>For example, to generate a keystore (in file <tt>server.keystore</tt>)
for server <tt>soapsvr.test.tcd.ie</tt> using password <tt>changeit</tt>
(for both the keystore and the certificate) in the Computer Engineering
group at Trinity College Dublin, Ireland, one would type the following:
<tt>keytool -genkey -alias tomcat-sv -dname "CN=soapsvr.test.tcd.ie, OU=ComputerEngineering,
O=Trinity College Dublin, L=Dublin, S=Dublin, C=IE" -keyalg RSA -keypass
changeit -storepass changeit -keystore server.keystore</tt>
<p>Note that
<ul>
<li>
The RSA algorithm is used to generate certificates.</li>

<li>
Ensure that the 'CN' field that you specify when you create the server
certificate matches the name of the machine on which you're running tomcat,
or your browser will complain about certificate name mis-matches (not a
problem on a test server, a big problem on a production server!).</li>
</ul>

<h3>
Step 2b: Export the Server Certificate</h3>
>From command prompt run this command to export your certificate from the
keystore into an external file (we do this so we can import the certificate
into the client's keystore as a trusted certificate).
<pre>
keytool -export -alias tomcat-sv -storepass changeit -file server.cer -keystore server.keystore&nbsp;

</pre>
If everything works, you should now have a file called <tt>server.cer</tt>
which contains your server's certificate.
<h3>
Step 2c: Generate a Client Key and Certificate</h3>
This step is very similar to the generation of the server key and certificate
- it uses the same <tt>keytool</tt> tool with different parameters.
<br>Note that the keystore file name has changed (it is now <tt>client.keystore</tt>).
Use <tt>keytool</tt> as follows:
<p><tt>keytool -genkey -alias tomcat-cl -dname "CN=Client,OU=TRL, O=IBM,
L=Yamato-shi, S=Kanagawa-ken, C=JP" -keyalg RSA -keypass changeit -storepass
changeit -keystore client.keystore</tt>
<h3>
Step 2d: Export the Client Certificate</h3>
This step is very similar to the export of the server certificate - it
uses the same <tt>keytool</tt> tool with different parameters:
<pre>
keytool -export -alias tomcat-cl -storepass changeit -file client.cer -keystore client.keystore&nbsp;

</pre>
If everything works, you should now have a file called <tt>client.cer</tt>
which contains your client's certificate.
<h3>
Step 2e: Import the Certificates into the Keystores</h3>
We want the client certificate to be added to the server's keystore, and
the server's certificate to be added to the client's keystore.
<br>Doing this will mean that the client and server trust one another.
<br>Import the server certificate into the client's keystore:
<br><tt>keytool -import -v -trustcacerts -alias tomcat -file server.cer
-keystore client.keystore -keypass changeit -storepass changeit</tt>
<br>Import the client certificate into the server's keystore: <tt>keytool
-import -v -trustcacerts -alias tomcat -file client.cer -keystore server.keystore
-keypass changeit -storepass changeit</tt>
<h2>
Step 3: Set up Tomcat for SSL Communication</h2>

<h3>
Step 3a: Modify your Tomcat Configuration File</h3>
You need to amend server.xml (located in the <tt>conf</tt> directory of
Apache Tomcat). Add the following lines to the xml file:
<pre>
&lt;Connector className ="org.apache.tomcat.service.PoolTcpConnector">&nbsp;

&lt;Parameter name="handler" value ="org.apache.tomcat.service.http.HttpConnectionHandler"/>&nbsp;

&lt;Parameter name="port" value="8443"/>&nbsp;

&lt;Parameter name="socketFactory" value="org.apache.tomcat.net.SSLSocketFactory" />&nbsp;

<b>&lt;Parameter name="keystore" value="c:\apache\soap-2_3\bin\server.keystore" />&nbsp;

</b>&lt;Parameter name="keypass" value="changeit"/>&nbsp;

&lt;Parameter name="clientAuth" value="true"/>&nbsp;

&lt;/Connector>&nbsp;

</pre>
Note that the value used for the <tt>keystore</tt> parameter (shown in
bold above) may be different on your machine; it should contain the full
path and filename of the server keystore file (<tt>server.keystore</tt>)
generated in Step 2a above. Note also that the port number we chose to
use for SSL in the above configuration is 8443. The port normally used
for HTTPS is 443, but for testing we are using 8443.
<h3>
Step 3a: Test your HTTPS server</h3>
At this point, you should restart your Tomcat server. It will probably
take a bit longer to start up. You can now use a web browser to test that
it is working.
<br>Test the SSL installation by opening your browser and typing in the
following URL:
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; https://servername:8443/index.html</pre>
Note that <tt>servername</tt> should be replaced with the name of the server
on which you are running Tomcat. If SSL is working then you should see
the default home page for your Tomcat installation.
<br>Your browser may generate a warning about un-trusted certificates or
unrecognised authorities (just click OK).
<h2>
Step 4: Modify the SOAP Client to use SSL</h2>

<h3>
Step 4a: Java SSL Client</h3>
You need to set up properties before you call the URL in the SOAP client.
Here is an example SOAP client that calls a SOAP service using HTTPS on
a Tomcat server:
<pre>
// classes for ssl

import javax.net.ssl.SSLSocketFactory;

import java.security.Security;



...



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // setup some ssl-specific stuff

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // specify the location of where to find key material for the default TrustManager (this overrides jssecacerts and cacerts)

<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.setProperty("javax.net.ssl.trustStore","C:\\jdk1.3\\bin\\client.keystore");

</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // use Sun's reference implementation of a URL handler for the "https" URL protocol type.&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // dynamically register sun's ssl provider

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // note that the url is using https protocol and not http

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; URL urls = new URL( "https://localhost:8443/soap/servlet/rpcrouter");

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // prepare and then execute a SOAP method

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // output some basic information

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("\nUsing " + urls.getProtocol() + " to connect to " + urls.getHost() + " on port #" + urls.getPort());

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // prepare the service invocation as usual

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Call call = new Call();&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String urn = "urn:demo:checkflight";&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call.setTargetObjectURI( urn );&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call.setMethodName( "getFlightInfo" );

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // set up any parameters as usual

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Invoke the call

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response resp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resp = call.invoke(urls, "");

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (SOAPException e)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.err.println("Caught SOAPException (" + e.getFaultCode() + "): " + e.getMessage());

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

</pre>
Once again the bold directory path is a pointer to the client keystore.
This may have to be changed depending on where you generated it. Also note
that the url is <b>https</b> and not http. It's an easy mistake to make!
<h3>
Step 4b: Java SSL Client with Proxy [Optional]</h3>
If your client needs to use a proxy server in order to access the SOAP
service, then add the following lines to your code:
<pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.setProperty("https.proxyHost", "proxy");&nbsp; // set name of proxy server that supports ssl&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.setProperty("https.proxyPort", "8080");&nbsp;&nbsp; // set port number for proxy server that supports ssl

</pre>
Use the following for Proxy without SSL:
<pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.setProperty("proxySet", "true"); // enable proxying

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.setProperty("proxyHost", "proxy");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // set name of proxy server

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.setProperty("proxyPort", "8080");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // set port number for proxy server

</pre>
If you are using Socks proxy then set these (system) properties:
<pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.setProperty("socksProxyHost", "hostname");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // set name of socks server&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.setProperty("socksProxyPort", "1080");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // set port number for socks server

</pre>

<h2>
Creating X.509 Certificate Chains</h2>
By Darrell Drake
<h3>
Overview</h3>
This instruction set covers creating mutual trust between two entities
using a certificate chains (my certificate with an attached lineage of
public certificates), which is more practical in a production environment
than the minimal security approach. In this case a principal is trusted
if any of the certificates in its chain are trusted. Additional tool needed:
IBM KeyMan, which can read and issue certificates from keystores in the
JKS and PKCS12 formats. Other formats (e.g. IBM CMS Key Database) don't
work well, at least in my experience.
<h3>
Downloading KeyMan</h3>
KeyMan can be downloaded from: <a href="http://www.alphaworks.ibm.com/tech/keyman">http://www.alphaworks.ibm.com/tech/keyman</a>.
<h3>
Creating a new Keystore and Keypair using KeyMan</h3>

<ul>
<li>
From the initial window, click on the "create new" icon on the left</li>

<br>OR
<br>from an already-open KeyMan window, under the File menu choose New.
<li>
Specify the type of keystore (pkcs 7, 12 and JKS are options)</li>

<li>
Immediately the template is created</li>

<li>
Under the Actions menu choose generate key</li>

<li>
Select the desired key algorithm and length, click OK</li>

<li>
WAIT</li>
</ul>

<h3>
Opening an existing keystore file</h3>

<ul>
<li>
From the initial window, click on the "open" icon on the right</li>

<br>OR
<br>from an already-open KeyMan window, under the File menu choose Open
<li>
Select "local resource", click next</li>

<li>
Enter or browse for the filename, click next</li>

<li>
If applicable, enter the password protecting the file</li>
</ul>

<h3>
Generating a self-signed certificate using KeyMan (for new serverkeystore)</h3>

<ul>
<li>
Make sure the new key pair (and just the key pair) is selected</li>

<li>
Under the Actions menu, choose Create Certificate</li>

<li>
Choose Self-Signed Certificate, click next</li>

<li>
Fill in the principal information as requested, click next</li>

<li>
Select the period of validity for the new certificate, click next</li>
</ul>

<h3>
Requesting a client certificate using keytool</h3>
<tt>-- using keytool (after creating keyEntry "alias")</tt>
<br><tt>keytool -certreq {-alias alias} {-sigalg sigalg} {-file certreq_file}
[-keypass keypass] {-storetype storetype} {-keystore keystore} [-storepass
storepass] {-v} {-Jjavaoption}</tt>
<p>&nbsp;If you leave the <tt>"-file certreq_file"</tt> part out, the pkcs10
request will be printed to your standard output, which you can highlight
and copy to the system clipboard, transfer to a file or directly into KeyMan
(see next step "issuing certificate"). The principal information in the
request will be what you entered when using the "-genkey" command earlier.
<h3>
Requesting a client certificate using KeyMan (after creating a key pair)</h3>

<ul>
<li>
Make sure the new key pair (and just the key pair) is selected</li>

<li>
Under the Actions menu, choose Request Certificate</li>

<li>
Choose "Generate a PKCS#10 Request", click next</li>

<br>OR
<br>If you want to get a commercial certificate for your server, choose
"Go online to a CA" (I don't know the remaining steps for doing that)
<li>
Fill in the principal information as requested, click next</li>

<li>
Enter the filename where you want to save the request,</li>

<br>OR
<br>Choose to copy the request to the system clipboard, click next
<li>
The request is now stored in the location that you specified.</li>
</ul>

<h3>
Issuing a client certificate using KeyMan</h3>
(aka acting as your own CA, signing a PKCS#10 certificate request)
<ul>
<li>
Open the keystore that contains your server's private certificate</li>

<li>
Under the Actions menu, choose Create Certificate</li>

<li>
Choose Sign a PKCS#10 request, click next</li>

<li>
Enter or browse for the filename containing the request,</li>

<br>OR
<br>Choose to load the request from the system clipboard (if you stored
it there), click next
<li>
Review the principal info (recommended: verify it offline in production
scenario)</li>

<li>
Select the period of validity for the new certificate, click next</li>

<li>
Enter the [path-qualified] filename where you will store the new certificate,
click next</li>

<li>
NOT RECOMMENDED: saving the certificate to the clipboard (created a single
cert entry on the client side instead of chain in my experience).</li>
</ul>

<h3>
Importing your new certificate from the CA's Using Keytool</h3>
(after importing server's cert as trusted CA cert)
<br><tt>keytool -import {-alias alias} {-file cert_file} [-keypass keypass]
{-storetype storetype} {-keystore keystore} [-storepass storepass] {-v}
{-Jjavaoption}</tt>
<br>It should simply say "certificate was added to keystore" and finish
with no dialog. ["alias" is your original keyEntry; the default self-signed
certificate should now be overwritten with the CA-signed certificate]
<h3>
Importing your new certificate from the CA's Using KeyMan</h3>

<ul>
<li>
Under the File menu, choose Import</li>

<li>
Select "local resource", click next</li>

<li>
Enter or browse for the filename ("cert_file"), click next</li>

<li>
You should get a popup dialog saying "Private Certificate Received", click
OK</li>
</ul>

<h3>
Saving the new or changed keystore file using KeyMan</h3>

<ul>
<li>
Under the File menu choose Save</li>

<li>
Enter the [path-qualified] filename (leave the default file format if PKCS12),
click ok</li>

<li>
Enter the password if prompted</li>
</ul>
NOTE: If the server gets a certificate chain from a higher CA entity, the
client could import that higher entity's certificate as a trusted CA certificate
(it may already have that certificate by default), and it would thus trust
the server certificate.
<h2>
Troubleshooting</h2>
One extremely useful tip for troubleshooting SSL is to use the built-in
SSL debugging features:
<br><tt>java -djavax.net.debug=help YourClassname</tt>
<br>(this will give you a help message for SSL debugging features)
<h3>
Unknown Protocol Error</h3>
Problem: <tt>Exception in thread "main" java.net.MalformedURLException:
unknown protocol: https</tt>
<br>Solution: Ensure that the ssl-specific initialisation code happens
before you create a <tt>java.net.URL</tt> object.
<h3>
Unrecognized SSL handshake</h3>
Problem: <tt>ContextManager: IOException reading request, ignored - javax.net.ssl.SSLException:
Unrecognized SSL handshake.</tt>
<br>Solution: The most likely problem is either:
<br>(a) your url is <tt>http://</tt> instead of <tt>https://</tt>
<br>or
<br>(b) your client and server are using different versions of soap.jar
(possibly 2.0/2.1).
<h3>
Bad Certificate Error</h3>
Redo Steps 2, 3 and 4.
<h3>
Socket Write Error</h3>
Problem: <tt>java.lang.reflect.InvocationTargetException: java.net.SocketException:
Connection aborted by peer: socket write error</tt>
<br>Solution: This problem occurs because (for some reason) the server
cannot authenticate the client. Change the following line in server.xml:
<pre>&lt;Parameter name="clientAuth" value="false"/></pre>

<h3>
Keytool Error</h3>
Problem: <tt>keytool error: java.io.IOException: Keystore was tampered
with, or password was incorrect</tt>
<br>Solution: Try deleting the keystore file and re-creating it (see the
instructions at the beginning of this page).
<h2>
Further Information</h2>

<h3>
SOAP</h3>

<ul>
<li>
The SOAP Protocol: <a href="http://www.w3.org/TR/SOAP/">http://www.w3.org/TR/SOAP/</a>.</li>

<li>
Apache SOAP: <a href="http://xml.apache.org/soap/">http://xml.apache.org/soap/</a>.</li>
</ul>

<h3>
SSL</h3>

<ul>
<li>
Sun JSSE FAQ: <a href="http://java.sun.com/products/jsse/FAQ.html">http://java.sun.com/products/jsse/FAQ.html</a></li>

<li>
"Modifying your Java Client to use Secure Sockets Layer": <a href="http://as400bks.rochester.ibm.com/html/as400/v4r5/ic2924/index.htm?info/java/rzaha/sslcex02.htm">http://as400bks.rochester.ibm.com/html/as400/v4r5/ic2924/index.htm?info/java/rzaha/sslcex02.htm</a></li>

<li>
Notes on SSL error codes: <a href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/sslerr.html">http://www.mozilla.org/projects/security/pki/nss/ref/ssl/sslerr.html</a></li>

<li>
Cryptographic Downloads (includes OpenSSL): <a href="http://www2.psy.uq.edu.au/~ftp/Crypto/">http://www2.psy.uq.edu.au/~ftp/Crypto/</a></li>
</ul>

</body>
</html>
index.html (text/html, 6.6 KB)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>

<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<META name="GENERATOR" content="IBM WebSphere Homepage Builder V4.0.0 for Linux">
<title>Apache SOAP Installation Instructions</title>
</head>

<body bgcolor="#FFFFFF">

<h2 align="center">Installation Instructions for Apache SOAP
v2.3</h2>

<p>The Apache-SOAP distribution can be installed for use as a
client or as a server. This document provides installation
instructions for both cases and also has a trouble shooting
section to help sort out common installation related problems.</p>

<p><strong>Important note for users upgrading from older versions
of Apache SOAP: </strong>If you are upgrading from an older
version of Apache SOAP then you must be sure to remove any cached
class files, DeployedServices.ds files etc. or you will get a
variety of strange errors. If you deployed Apache SOAP using a
Web app, then any old expanded WARs must also be removed.
Services deployed into the old version cannot be automatically
transferred to the new version - you must manually re-deploy them
to the new version. That is, the old DeployedServices.ds file
cannot be read by this new version. We apologize in advanced for
the pain this will cause some of our users. If you are in fact
upgrading from an older version of Apache SOAP and get any funny,
unusual looking exceptions or behavior, then most likely the
problem is some unexpected interaction with code from the older
version. Please clean up and try again or try installing in a
virgin environment.</p>

<h3>Unpack the Distribution</h3>

<p>We assume that you have downloaded the binary distribution of
Apache-SOAP and have extracted the archive into the directory <tt>/foo</tt>.
Thus the files from the distribution are in the directory <tt>/foo/soap-2_3/</tt>.</p>

<p>Note that if you are on a Win32 machine then you should
replace &quot;/&quot; with &quot;\&quot; as you follow these
instructions.</p>

<h3>Client-Side Instructions</h3>

<p>Your classpath must contain <strong>/foo/soap-2_3/lib/soap.jar</strong>
and the following:</p>

<ul>
    <li><strong>mail.jar</strong> from <a
        href="http://java.sun.com/products/javamail/">JavaMail</a></li>
    <li><strong>activation.jar </strong>from <a
        href="http://java.sun.com/products/beans/glasgow/jaf.html">JavaBeans
        Activation Framework</a></li>
    <li>a <a href="http://java.sun.com/xml/xml_jaxp.html"
        target="_top">JAXP</a> compatible, namespace-aware XML
        parser such as <a href="http://xml.apache.org/xerces-j">Apache
        Xerces</a> (v1.1.2 or later). If you have other non-namespace
        aware XML parsers on your classpath then the namespace-aware
        parser must be at the front of your classpath. Apache
        SOAP will not work otherwise.</li>
</ul>

<p>Additionally, to run the samples that came with the
distribution, add <strong>/foo/soap-2_3</strong> to your
classpath.</p>

<h3>Server-Side Instructions</h3>

<p>You need to ensure that the server classpath contains all of
the above components. In addition, to implement services in
scripting languages (such as the calculator sample), add <strong>bsf.jar</strong>
from <a
href="http://oss.software.ibm.com/developerworks/projects/bsf">BSF</a>
and <strong>js.jar</strong> from <a
href="http://www.mozilla.org/rhino/">Rhino</a> to your classpath.</p>

<p>To install the server-side of Apache-SOAP, you need a Web
application server that supports servlets and JSPs (if you want
to run the admin client as well). </p>

<p><strong>Installing the router servlets and admin client:</strong>
The instructions for how to install varies from one app server to
another. Here are instructions for the following servers:</p>

<ul>
    <li><a href="tomcat.html">Apache Tomcat v3.2</a></li>
    <li><a href="weblogic51.html">BEA WebLogic Application Server
        v5.1</a></li>
    <li><a href="weblogic60.html">BEA WebLogic Application Server
        v6.0</a></li>
    <li><a href="websphere.html">IBM WebSphere v3.5</a></li>
    <li><a href="iPlanet.html">iPlanet Application Server 6.0</a></li>
    <li><a href="JRun.html">JRun 3.0</a></li>
</ul>

<p>Didn't find yours listed? See whether the instructions for
Tomcat (for example) gives you enough hints on how to do it. If
not, first check the FAQ (<a
href="http://xml.apache.org/soap/faq" target="_top">http://xml.apache.org/soap/faq</a>)
and if that fails try asking on the Apache-SOAP user's list; more
than likely someone else has done it already. You can subscribe
to the list here: <a href="http://xml.apache.org/soap/mail.html"
target="_top">http://xml.apache.org/soap/mail.html</a>.</p>

<h3><a name="test-install">Testing Your Server-Side Installation</a></h3>

<p>Point your browser to:</p>

<blockquote>
    <p><code>http://localhost:port/soap/servlet/rpcrouter</code> </p>
</blockquote>

<p>and</p>

<blockquote>
    <p><code>http://localhost:port/soap/servlet/messagerouter</code>
    </p>
</blockquote>

<p>where <code>port</code> is <code>8080</code>, or <code>4040</code>,
or whatever port your particular HTTP server is listening on. The
browser should display the following:</p>

<blockquote>
    <h4>SOAP (RPC|Message) Router</h4>
    <p><code>Sorry, I don't speak via HTTP GET- you have to use
    HTTP POST to talk to me. </code></p>
</blockquote>

<p>If you don't see this message, your server is not configured
correctly. If you do, you now know your router URLs: they are the
URLs you pointed your browser to.</p>

<p>To test whether you have proper server and client-side stuff
set up, follow the client-side instructions to put the right
things on your classpath and type the following:</p>

<blockquote>
    <p><code>java org.apache.soap.server.ServiceManagerClient </code><code><em>rpc-router-url</em></code><code>
    list</code> </p>
</blockquote>

<p>where the first argument above is the RPC router URL you
determined earlier (the one with &quot;rpcrouter&quot; at the end).
[NOTE: The above command line is one long line; your browser may
show it on two lines but do NOT put it on two lines!]</p>

<p>If this succeeds you will see it return with no output or with
a list of URIs. Either case is successful - it indicates what
services are already deployed on your server. If you get anything
else then its time to <a href="../trouble/index.html">troubleshoot</a>.
</p>

<h3>SSL Instructions</h3>

<p><strong>Getting SSL support up and running:</strong> The
instructions for how to get SSL support running vary from server
to server: Here are instructions for the following servers:</p>

<ul>
    <li><a href="FAQ_Tomcat_SOAP_SSL.html">Apache Tomcat v3.2</a></li>
</ul>

<p>&nbsp;</p>
</body>
</html>
index-j.html (text/html, 4.6 KB)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>

<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-2022-jp">
<META name="GENERATOR" content="IBM HomePage Builder 2001 V5.0.3 for Windows">
<title>Apache SOAP Installation Instructions</title>
</head>

<body bgcolor="#FFFFFF">

<P>
<i>
$BLu!'F|K\%"%$!&%S!<!&%(%`(B($B3t(B) $B%=%U%H%&%'%";v6HIt(B $BJF;}(B $B9,<w(B

<blockquote>
<font color="blue">
$B$3$N%I%-%e%a%s%H$O!"(BApache SOAP 2.0$B%l%Y%k$N$b$N$rF|K\8lLu$7$?$b$N$G!"(B
$B:G?7HG$N$b$N$H$O0[$J$k2DG=@-$,$"$j$^$9!#$^$?!"%&%'%V>e$G8+$k>l9g!"0lIt(B
$B$N%j%s%/$,@Z$l$F$$$k2DG=@-$,$"$j$^$9!#(BApache SOAP$B$N%G%#%l%/%H%j$N3:Ev(B
$B%U%!%$%k$HCV$-49$($k$3$H$G!"%*%j%8%J%k$N%Z!<%8$K%j%s%/$5$;$k$3$H$,$G$-(B
$B$^$9!#(B
</font>
</blockquote>
</i>
</P>

<h1 align="center">Apache-SOAP Version 2.0: $BF3F~<j=g(B</h1>

<p align="center">2000$BG/!!(B8$B7n(B</p>

<p>Apache-SOAP$B$O!"%/%i%$%"%s%H!"$^$?$O%5!<%P!<$H$7$FF3F~$9$k$3$H$,$G$-$^$9!#$3$N;qNA$O!"APJ}$NF3F~<j=g$r<($7!"F3F~$K$^$D$o$k$h$/$"$k%H%i%V%k$r2r7h$9$k$?$a$N!V%H%i%V%k%7%e!<%F%#%s%0!W$N>O$r@_$1$F$"$j$^$9!#(B</p>

<h2>$B6&DL$N<j=g(B</h2>

<p>$B$9$G$K(BApache-SOAP$B$N%P%$%J%jG[I[%U%!%$%k$,%@%&%s%m!<%I$5$l$F$*$j!"%G%#%l%/%H%j!<(B/foo$B$K2rE`$5$l$F$$$k$b$N$H$7$FOC$r?J$a$^$9!#$=$N>l9g!"G[I[%U%!%$%k$+$i2rE`$5$l$?%U%!%$%k$O%G%#%l%/%H%j!<(B
/foo/soap-2_0/ $B$K2rE`$5$l$^$9!#(B</p>

<p>Win32$B4D6-$G:n6H$9$k>l9g$O!"(B&quot;/&quot;
$B$r(B &quot;\&quot; $B$HFI$_BX$($FFI$_?J$a$F$/$@$5$$!#(B</p>

<p><strong>XML Parser</strong>: Apache-SOAP $B$O!"(B <a
href="http://xml.apache.org/xerces-j">Apache Xerces</a> (Java) version 1.1.2 $B$^$?$O$=$l0J9_$N%P!<%8%g%s$rI,MW$H$7$^$9!#$3$l$i$N%P!<%8%g%s$O!"L>A06u4V$r%5%]!<%H$9$k(B
<a
href="http://www.w3.org/TR/DOM-Level-2/">DOM level 2</a> $B$rDs6!$7$^$9!#$b$7!"$9$G$KJL$N(BXML$B%Q!<%5!<!J$^$?$O!"(Borg.w3c.dom.*$B%$%s%?!<%U%'%$%9$r$b$C$F$$$k$G$"$m$&(BJAR$B%U%!%$%k!K$r$*;}$A$J$i!"(BXerces
$B$N(B xerces.jar $B%U%!%$%k$r%/%i%9%Q%9$N;O$a$K$*$/$3$H$,=EMW$G$9!#$=$&$7$J$$$H(B
Apache-SOAP $B$OF0$-$^$;$s!#(B</p>
<TABLE>
  <TBODY>
    <TR>
      <TD bgcolor="#cccccc">$BFC$K(BTomcat$B$K:G=i$+$i4^$^$l$F$$$k(BSun$B$N(BXML
      Parser$B!J(Bjakarta-tomcat\lib\xml.jar$B!K$N$3$H$r8@$C$F$$$^$9!#(BTomcat$B$G$O%G%U%)%k%H$G%/%i%9%Q%9$K(Bxerces.jar$B$h$j$bA0$K(Bxml.jar$B$r4^$a$k$N$G!"<B9T;~$K%(%i!<!J8E$$(BDOM$B$N%Q%C%1!<%8$r;H$&$?$a$K(BDOM
      Level2$B$N%a%=%C%I$,8+$D$+$i$J$$!K$,H/@8$7$^$9!#(B</TD>
    </TR>
  </TBODY>
</TABLE>
<P>$BB>$N%Q!<%5!<$r;H$($k$h$&$K$9$k$3$H$b$G$-$k$N$G$7$g$&$1$l$I!"8=:_$N%P!<%8%g%s$G$O$=$l$r$&$^$$$3$H<B8=$G$-$F$$$^$;$s$7!"$3$l0J>e$N@bL@$O$3$3$G$O$$$?$7$^$;$s!#(B</P>
<p><strong>Classpath</strong>: <tt>/foo/soap-2_0/lib/soap.jar</tt> $B$r%/%i%9%Q%9$KDI2C$7$F$/$@$5$$!#%5%s%W%k$rF0:n$5$;$k$N$G$"$l$P!"(B
<tt>/foo/soap-2_0</tt> $B$bI,MW$G$9!#(B</p>

<h2>$B%/%i%$%"%s%HB&$N<j=g(B</h2>

<p>$B6&DL$N<j=g$,=*$o$l$P!"=`Hw40N;$G$9!#(B</p>

<h2>$B%5!<%P!<B&$N<j=g(B</h2>

<p>Apache-SOAP $B$r%5!<%P!<B&$KF3F~$9$k$K$O!"%5!<%V%l%C%H$H#J#S#P$r%5%]!<%H$9$k%&%'%V!&%"%W%j%1!<%7%g%s!&%5!<%P!<$,I,MW$G$9!#(B</p>

<p><strong>RPC$B%k!<%?!<$H4IM}%/%i%$%"%s%H$NF3F~(B:</strong> $B$=$l$>$l$N%5!<%P!<Kh$NF3F~<j=g$G$9!#(B</p>

<ul>
    <li><a href="tomcat.html">Apache Tomcat v3.1</a></li>
    <li><a href="weblogic.html">WebLogic Application Server v5.1</a></li>
    <li><a href="websphere-j.html">IBM WebSphere v3.5</a></li>
    <li>JRun vx.y.z</li>
    <li>Microsoft Internet Information Server</li>
</ul>

<p>$B$*;H$$$N%5!<%P!<$,0lMw$K$"$j$^$;$s$+!)Nc$H$7$F(BTomcat$B$N<j=g$r8+$F$_$F$/$@$5$$!#$I$&$9$l$P$$$$$+$o$+$k$O$:$G$9!#$b$7J,$+$i$J$$$h$&$J$i!"(B
Apache-SOAP $B%f!<%6!<%:%j%9%H$KLd$$9g$o$;$F$_$^$7$g$&!#$b$&$9$G$K$@$l$+$,$d$C$F$_$?$+$b$7$l$^$;$s!#%j%9%H$K$O$3$A$i$+$iEPO?$G$-$^$9!#(B:
<a href="http://xml.apache.org/soap/mail.html">http://xml.apache.org/soap/mail.html</a>.</p>

<h1>$BF3F~;~$NLdBj$N2r7hJ}K!(B</h1>

<table border="1" width="100%">
    <tr>
        <th width="25%">Problem</th>
        <th width="50%">Comments</th>
    </tr>
    <tr>
        <td width="25%">$B!V(BgetAttributeNS is not found$B!W(B<BR>
      $B$H$$$&Nc30$K$J$C$?(B</td>
        <td width="50%">$B%/%i%9%Q%9$,@5$7$/$"$j$^$;$s!#(B - $B8E$$%Q!<%5!<$+!!(Borg.w3c.dom.*$B%/%i%9!!$r4^$s$G$$$kJL$N(BJAR$B%U%!%$%k$,(B
      Xerces 1.1.2 $B0J>e$N(B xerces.jar $B$h$j$b@h$K;2>H$5$l$F$$$^$9!#(B</td>
    </tr>
    <tr>
        <td width="25%">x</td>
        <td width="50%">y</td>
    </tr>
    <tr>
        <td width="25%">x2</td>
        <td width="50%">y2</td>
    </tr>
    <tr>
        <td width="25%">x3</td>
        <td width="50%">y3</td>
    </tr>
</table>
</body>
</html>
iPlanet.html (text/html, 23.7 KB)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Installing Apache SOAP on iPlanet</TITLE>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 5.50.4613.1700" name=GENERATOR>
<META content="Christopher P Kampemeier" name=Author></HEAD>
<BODY bgColor=#ffffff>
<H1><B><FONT size=+3>Installing Apache SOAP on iPlanet Application 
Server</FONT></B></H1><I>Updated May 24, 2001</I> 
<P>This document describes how to install Apache SOAP 2.3 on iPlanet Application 
Server 6.0 and how to exercise the Apache SOAP samples. 
<BLOCKQUOTE>
  <P><A href="#install-apache-soap">Installing Apache SOAP</A> 
  <P><A href="#cfg-client">Configuring the Client Environment</A> 
</P></BLOCKQUOTE>
<BLOCKQUOTE>
  <P><A href="#register-samples">Registering and Exercising the Apache SOAP 
  Samples</A> </P>
  <P><A href="#next-steps">Next Steps</A></P>
  <P><A href="#db-file">Changing Location of the Deployed Services Configuration 
  File </A></P></BLOCKQUOTE>
<H1><A name=install-apache-soap></A><B>Installing Apache SOAP</B> </H1>
<OL>
  <LI>Deploy the Apache SOAP Web Application 
  <LI>Add Supporting Libraries to Server Classpath 
  <LI>Test the Apache SOAP Installation<BR></LI></OL>
<H2><B>1. &nbsp;Deploy the Apache SOAP Web Application</B></H2>
<OL>
  <LI>Start the iPlanet Application Server Deployment Tool. 
  <LI>Open the <FONT face="Courier New, Courier, mono" color=#000099 
  size=2>soap.war</FONT> file from the expanded Apache SOAP distribution. This 
  file is located under <FONT face="Courier New, Courier, mono" size=2><I><FONT 
  color=#000099>soapinstalldir</FONT></I><FONT 
  color=#000099>/webapps/soap.war</FONT></FONT>. When asked to add iPlanet 
  deployment descriptor, click on OK. If informed that a number of class 
  references cannot be resolved, ignore the warning as supporting libraries will 
  be added to the server's classpath in the next section. 
  <LI>Add the <FONT face="Courier New, Courier, mono" color=#000099 
  size=2>soap.jar</FONT> file to the <FONT face="Courier New, Courier, mono" 
  color=#000099 size=2>WEB-INF/lib/ </FONT>area of the WAR file. Alternatively, 
  you can add the <FONT face="Courier New, Courier, mono" color=#000099 
  size=2>soap.jar</FONT> file to the start of the application server's 
  classpath. See the next section on adding supporting libraries to the 
  application server classpath. 
  <LI>Save the modified <FONT face="Courier New, Courier, mono" color=#000099 
  size=2>soap.war</FONT> file. 
  <LI>Deploy the <FONT face="Courier New, Courier, mono" color=#000099 
  size=2>soap.war</FONT> module to the application server. </LI></OL>
<P>Upon deployment, the SOAP web application is installed in the<FONT 
face="Courier New, Courier, mono" size=2> <I><FONT 
color=#000099>installdir</FONT></I><FONT 
color=#000099>/APPS/modules/soap/</FONT></FONT> directory of the application 
server. If you browse the <FONT face="Courier New, Courier, mono" color=#000099 
size=2>WEB-INF/classes/</FONT> directory of the deployed web application, you'll 
note that the Java classes for Apache SOAP sample services are included in the 
web application.</P>
<H2>3. Add Supporting Libraries to Server Classpath</H2>
<P>Download a copy of a JAXP compatible, namespace-aware XML parser such as 
Xerces. Version 1.4 or later of the <A 
href="http://xml.apache.org/xerces-j/">Xerces Java Parser</A> has been shown to 
work properly with Apache SOAP 2.3.</P>
<P>To avoid conflicts with the XML parser bundled with the application server, 
you must ensure that the JAXP compatible parser library appears at the start of 
the application server's classpath.</P>
<P><FONT color=#000000>If you plan on exercising the Apache SOAP samples that 
rely on server side scripting languages such as JavaScript, then download the 
Bean Scripting Framework and Rhino JavaScript libraries and add the <FONT 
face="Courier New, Courier, mono" color=#000099 size=2>bsf.jar</FONT> and <FONT 
face="Courier New, Courier, mono" color=#000099 size=2>js.jar</FONT> files to 
the front of the application server's classpath. </FONT>Refer to the <A 
href="http://xml.apache.org/soap/docs/index.html">Apache SOAP installation 
instructions</A> for pointers to these supporting JAR files.</P>
<P>Since<FONT face="Courier New, Courier, mono" color=#000099 size=2> 
mail.jar</FONT> and <FONT face="Courier New, Courier, mono" color=#000099 
size=2>activation.jar </FONT>are already present in the server classpath, you do 
not need to perform any special setup to enable Apache SOAP to access these 
libraries.</P>
<H3>Classpath Settings on Windows</H3>
<P>On Windows the application server uses the CLASSPATH setting defined in the 
application server's registry. (Setting the Windows system environment variable 
CLASSPATH will not affect the setting used by the application server). To modify 
the registry: </P>
<OL>
  <LI>Execute <FONT face="Courier New, Courier, mono"><FONT color=#000099 
  size=2>kregedit</FONT></FONT>, the application server's registry editor. 
  <LI>Navigate to <FONT face="Courier New, Courier, mono"><FONT color=#000099 
  size=2><I>SOFTWARE\iPlanet\Application Server\6.0</I></FONT></FONT> 
  <LI>Select <FONT face="Courier New, Courier, mono"><FONT 
  size=-1><I>Java\ClassPath</I></FONT></FONT> and the select 
  <I>Edit-&gt;Modify</I> to change the value. 
  <LI>Add the Rhino<FONT face="Courier New, Courier, mono" color=#000099 size=2> 
  js.jar</FONT> (optional), <FONT face="Courier New, Courier, mono" 
  color=#000099 size=2>bsf.jar</FONT> (optional) and Xerces JAR files to front 
  of the classpath: 
  <BLOCKQUOTE>
    <P><FONT face="Courier New, Courier, mono"><FONT 
    face="Courier New, Courier, mono"><FONT face="Courier New, Courier, mono" 
    color=#000099 
    size=2>d:\rhino\js.jar;d:\bsf-2_2\lib\bsf.jar;d:\xerces-1_4_0\xerces.jar;</FONT></FONT><FONT 
    color=#000099 size=-1>...</FONT></FONT></P></BLOCKQUOTE>
  <LI>Restart the application server to reload the registry settings. </LI></OL>
<H3>Classpath Settings on UNIX (iPlanet Application Server 6.0 SP2)</H3>
<P>Modify the <FONT face="Courier New, Courier, mono"><FONT size=-1><I><FONT 
color=#000099 size=2>installdir</FONT></I><FONT color=#000099 
size=2>/ias/bin/kjs</FONT></FONT></FONT> script to include the supporting JAR 
files.&nbsp; The kjs script starts the JVM that houses the application server's 
web and EJB containers. </P>
<P><FONT face="Courier New, Courier, mono"><FONT size=-1><I><FONT color=#000099 
size=2>installdir</FONT></I><FONT color=#000099 
size=2>/ias/bin/kjs</FONT></FONT></FONT><FONT face="Courier New, Courier, mono" 
color=#000099 size=2>:</FONT> 
<BLOCKQUOTE>
  <P><FONT face="Courier New, Courier, mono" color=#000099 size=2>...</FONT> 
  <FONT face="Courier New, Courier, mono" color=#000099 
  size=2><BR><B>SOAP_CLASSES=/opt/rhino/js.jar:/opt/bsf-2_2/lib/bsf.jar:/opt/xerces-1_4_0/xerces.jar</B><BR>CLASSPATH=<B>$SOAP_CLASSES:</B>$THIRD_PARTY_JDBC_CLASSPATH:$GX_ROOTDIR/classes/java/jdbc20.jar:</FONT> 
  <FONT face="Courier New, Courier, mono" color=#000099 
  size=2><BR>$GX_ROOTDIR/classes/java/javax.jar:...</FONT></P></BLOCKQUOTE>
<P>Restart the application server to pick up the classpath changes.</P>
<H3>Classpath Settings on UNIX (iPlanet Application Server 6.0 SP3)</H3>
<P>In iPlanet Application Server 6.0 SP3 the classpath setting used by the kjs 
shell script is housed in a common environment setting shell script. Make 
changes to the kjs CLASSPATH variable in the</P>
<P><FONT face="Courier New, Courier, mono"><FONT size=-1><I><FONT color=#000099 
size=2>installdir</FONT></I><FONT color=#000099 
size=2>/ias/iasenv.ksh</FONT></FONT></FONT><FONT 
face="Courier New, Courier, mono" color=#000099 size=2>: </FONT></P>
<BLOCKQUOTE>
  <P><FONT face="Courier New, Courier, mono" color=#000099 size=2>...</FONT> 
  <FONT face="Courier New, Courier, mono" color=#000099 size=2><BR># Union of 
  all 
  CLASSPATHS<BR><B>SOAP_CLASSES=/opt/rhino/js.jar:/opt/bsf-2_2/lib/bsf.jar:/opt/xerces-1_4_0/xerces.jar 
  </B><BR>export 
  CLASSPATH=<B>$SOAP_CLASSES</B>:${TOMCAT_DIR}/jasper.jar:...</FONT></P></BLOCKQUOTE>
<P>Restart the application server to pick up the classpath changes.</P>
<H2><B>4. Test the Apache SOAP Installation</B></H2>
<P>Access the following URL to start the administrative interface: </P>
<BLOCKQUOTE>
  <P><A href="/NASApp/soap/admin/index.html"><FONT 
  face="Courier New, Courier, mono" size=2>http://&lt;web server 
  host&gt;/NASApp/soap/admin/index.html</FONT></A></P></BLOCKQUOTE>
<P>Access the RPC Router and Message Router Servlets by accessing the following 
URLs:</P>
<BLOCKQUOTE>
  <P><A href="/NASApp/soap/servlet/rpcrouter"><FONT 
  face="Courier New, Courier, mono" size=2>http://&lt;web server 
  host&gt;/NASApp/soap/servlet/rpcrouter</FONT></A></P>
  <P><A href="/NASApp/soap/servlet/messagerouter"><FONT 
  face="Courier New, Courier, mono" size=2>http://&lt;web server 
  host&gt;/NASApp/soap/servlet/messagerouter</FONT></A> </P></BLOCKQUOTE>
<P>If your Apache SOAP installation is correct, the browser will display:</P>
<BLOCKQUOTE>
  <P><FONT face="Courier New, Courier, mono" color=#000099 size=2>SOAP 
  (RPC|Message) Router<BR>Sorry, I don't speak via HTTP GET- you have to use 
  HTTP POST to talk to me. </FONT></P></BLOCKQUOTE>
<P>Now that you've performed a basic test of the environment, you are ready to 
configure your client environment and exercise sample applications.</P>
<P>Since the application server's web container does not by default load<FONT 
face="Courier New, Courier, mono" color=#000099 size=2> index.html</FONT> files, 
you must include the index.html file names in the URLs. Otherwise, you will 
encounter a GX Error in the browser when attempting to access a URL such as 
<FONT face="Courier New, Courier, mono" color=#000099 
size=2>NASApp/soap/admin/</FONT>.</P>
<H1><A name=cfg-client></A>Configuring the Client Environment</H1>
<P>To register SOAP services and to run Java-based client applications, you must 
add several JAR files to your client's classpath:</P>
<TABLE cellPadding=3 width="71%" border=1>
  <TBODY>
  <TR>
    <TD width="22%">JAR</TD>
    <TD width="39%">Description</TD>
    <TD width="39%">Location</TD></TR>
  <TR>
    <TD width="22%"><FONT face="Courier New, Courier, mono" color=#000099 
      size=2>mail.jar</FONT></TD>
    <TD width="39%">JavaMail API</TD>
    <TD width="39%"><FONT face="Courier New, Courier, mono" color=#000099 
      size=2><I>installdir</I>/ias/classes/java/</FONT></TD></TR>
  <TR>
    <TD width="22%"><FONT face="Courier New, Courier, mono" color=#000099 
      size=2>activation.jar</FONT></TD>
    <TD width="39%">JavaBeans Activation Framework</TD>
    <TD width="39%"><I><FONT face="Courier New, Courier, mono" color=#000099 
      size=2>installdir</FONT></I><FONT face="Courier New, Courier, mono" 
      color=#000099 size=2>/ias/classes/java/</FONT></TD></TR>
  <TR>
    <TD width="22%"><FONT face="Courier New, Courier, mono" color=#000099 
      size=2>soap.jar</FONT></TD>
    <TD width="39%">Apache SOAP infrastructure</TD>
    <TD width="39%"><I><FONT face="Courier New, Courier, mono" color=#000099 
      size=2>soapinstalldir</FONT></I><FONT face="Courier New, Courier, mono" 
      color=#000099 size=2>/lib/soap.jar</FONT></TD></TR>
  <TR>
    <TD width="22%"><FONT face="Courier New, Courier, mono" color=#000099 
      size=2>xerces.jar</FONT> (or equivalent)</TD>
    <TD width="39%">A JAXP compatible, namespace-aware XML parser such as 
      Xerces.</TD>
    <TD width="39%"><I><FONT face="Courier New, Courier, mono" color=#000099 
      size=2>xercesinstalldir</FONT></I><FONT face="Courier New, Courier, mono" 
      color=#000099 size=2>/xerces.jar</FONT></TD></TR></TBODY></TABLE>
<P>To register and run the Apache SOAP 2.3 samples, you also need to add the 
location of the samples directory to your client classpath. </P>
<P>On Windows, the client classpath setting might resemble the following:</P>
<BLOCKQUOTE>
  <P><FONT face="Courier New, Courier, mono" color=#000099 size=2>set 
  IAS_HOME=d:\iplanet\ias6\ias<BR>set 
  CLASSPATH=%IAS_HOME%\classes\java\mail.jar;%IAS_HOME%\classes\java\activation.jar;<BR>c:\xerces-1_4_0\xerces.jar;c:\soap-2_3\lib\soap.jar;c:\soap-2_3;%CLASSPATH% 
  </FONT></P></BLOCKQUOTE>
<P>On UNIX, the client classpath setting might resemble the following:</P>
<BLOCKQUOTE>
  <P><FONT color=#000099>export <FONT face="Courier New, Courier, mono" 
  size=2>IAS_HOME=/usr/iplanet/ias6/ias</FONT><BR><FONT 
  face="Courier New, Courier, mono" size=2>export 
  CLASSPATH=$IAS_HOME/classes/java/mail.jar:$IAS_HOME/classes/java/activation.jar:<BR>/opt/xerces-1_4_0/xerces.jar:/opt/soap-2_3/lib/soap.jar:/opt/soap-2_3:$CLASSPATH</FONT></FONT></P></BLOCKQUOTE>
<H1><A name=register-samples></A><B>Registering and Exercising the Apache SOAP 
Samples</B> </H1>
<P>Each sample bundled with Apache SOAP 2.3 includes a script to register and 
exercise the samples. Since the supporting Java classes for the Apache SOAP 
sample services have already been deployed as part of the SOAP web application, 
you do not need to move these classes to the application server. The sample 
scripts will only register the already deployed SOAP services with the Apache 
SOAP runtime.</P>
<P>1. Edit testit Scripts to Reflect RPC Router URL<BR>2. Run testit 
Scripts<BR>3. Troubleshooting<BR></P>
<H2>1. Edit testit Scripts to Reflect RPC Router URL</H2>
<P>Go to the<FONT face="Courier New, Courier, mono" size=2> <I><FONT 
color=#000099>soapinstalldir</FONT></I><FONT 
color=#000099>/samples/addressbook/</FONT></FONT> directory and edit either the 
testit.cmd or testit.sh script depending on your OS platform. You will need to 
perform a replace all on the URL of the rpcrouter servlet to match your 
application server deployment.</P>
<P>For example, throughout the testit script, the string:</P>
<BLOCKQUOTE>
  <P><FONT face="Courier New, Courier, mono" color=#000099 
  size=2>http://localhost:8080/soap/servlet/rpcrouter </FONT></P></BLOCKQUOTE>
<P>will need to be changed to:</P>
<BLOCKQUOTE>
  <P><FONT face="Courier New, Courier, mono" color=#000099 
  size=2>http://&lt;hostname&gt;:&lt;port&gt;/NASApp/soap/servlet/rpcrouter</FONT></P></BLOCKQUOTE>
<H2>2. Run the testit Script</H2>
<P>Doublecheck to ensure that your client's classpath is set appropriately. Then 
execute the testit script. For example, when running the addressbook sample, you 
should see the following output in the client window:</P>
<BLOCKQUOTE><PRE><FONT color=#000099>D:\soap-2_3\samples\addressbook&gt;testit<BR>This test assumes a server URL of http://127.0.0.1/NASApp/soap/servlet/rpcrouter</FONT></PRE><PRE><FONT color=#000099>Deploying the addressbook service...
     .
     Verify that it's there
     Deployed Services:
     urn:AddressFetcher
     .
     Getting info for "Mr Good"</FONT></PRE><PRE><FONT color=#000099>123 Main Street
     Anytown, NY 12345
     (123) 456-7890
     .
     Adding "John Doe"
     John Doe has been added.
     .
     Query "Mr Doe" to make sure it was added</FONT></PRE><PRE><FONT color=#000099>123 Main Street
     AnyTown, SS 12345
     (800) 555-1212
...
  &lt;Listing&gt;<BR>    &lt;Name&gt;Mary Smith&lt;/Name&gt;<BR>    &lt;Address&gt;<BR>      &lt;StreetNum&gt;888&lt;/StreetNum&gt;<BR>      &lt;StreetName&gt;Broadway&lt;/StreetName&gt;<BR>      &lt;City&gt;Somewhere&lt;/City&gt;<BR>      &lt;State&gt;FL&lt;/State&gt;<BR>      &lt;Zip&gt;87654&lt;/Zip&gt;<BR>      &lt;PhoneNumber&gt;<BR>        &lt;AreaCode&gt;222&lt;/AreaCode&gt;<BR>        &lt;Exchange&gt;333&lt;/Exchange&gt;<BR>        &lt;Number&gt;4444&lt;/Number&gt;<BR>      &lt;/PhoneNumber&gt;<BR>    &lt;/Address&gt;<BR>  &lt;/Listing&gt;<BR>&lt;/AddressBook&gt;<BR>.<BR>Undeploy it now<BR>.<BR>Verify that it's gone<BR>Deployed Services: </FONT></PRE></BLOCKQUOTE>
<P>If you successfully ran the address sample, then proceed to the <A 
href="#next-steps">Next Steps</A>.<BR></P>
<H2>3. Troubleshooting</H2>
<P>If you encounter the following messages when running a sample, the most 
likely cause is not having the JAXP compatible parser library at the front of 
the server's classpath:</P>
<BLOCKQUOTE><PRE><FONT color=#000099>D:\soap-2_3\samples\addressbook&gt;testit
This test assumes a server URL of http://127.0.0.1/NASApp/soap/servlet/rpcr

Deploying the addressbook service...
Ouch, the call failed:
  <B>Fault Code   = SOAP-ENV:Server.Exception:
  Fault String = java.lang.NoSuchMethodError
</B>... </FONT></PRE></BLOCKQUOTE>
<P>This error occurs because the XML parser bundled with the application server 
does not contain a class required by Apache SOAP. Once you place a JAXP 
compatible parser at the front of the server's classpath, you will solve this 
problem.</P>
<P>If you encounter errors when running the Calculator sample, ensure that 
you've added both the <FONT face="Courier New, Courier, mono" color=#000099 
size=2>bsf.jar</FONT> and<FONT face="Courier New, Courier, mono" color=#000099 
size=2> js.jar</FONT> libraries to the start of the application server's 
classpath.<BR></P>
<H1><A name=next-steps></A>Next Steps</H1>
<P>Try the remaining samples. Review the readme file for each sample to 
understand the intent of the sample.</P>
<P>Experiment by modifying the <FONT face="Courier New, Courier, mono" 
color=#000099 size=2>testit</FONT> scripts to leave services registered. Restart 
the application server to observe that registration of services is persistent 
across server restarts. </P>
<P>Access the Apache SOAP administrative interface to list the registered 
services:</P>
<BLOCKQUOTE>
  <P><A href="/NASApp/soap/admin/index.html"><FONT 
  face="Courier New, Courier, mono" size=2>http://&lt;web server 
  host&gt;/NASApp/soap/admin/index.html</FONT></A></P></BLOCKQUOTE>
<P>Select the <I>List</I> option to list the deployed services. Drill down into 
each service to see the detailed configuration of the service. Since the 
Calculator service is based on JavaScript, you will see the script code for this 
service as you list it in the administrative interface.</P>
<H1><A name=db-file></A>Changing the Location of the Deployed Services 
Configuration File </H1>
<P>The Apache SOAP infrastructure relies on a file named <FONT 
face="Courier New, Courier, mono" color=#000099 
size=2>DeployedServices.ds</FONT> to retain the configuration of deployed SOAP 
services. This file enables the Apache SOAP infrastructure to reload service 
configuration data as the application server is restarted. When Apache SOAP is 
deployed to iPlanet Application Server, the default location for this file 
is:</P>
<BLOCKQUOTE>
  <P><FONT face="Courier New, Courier, mono" size=2><I><FONT 
  color=#000099>installdir</FONT></I><FONT 
  color=#000099>/ias/DeployedServices.ds</FONT></FONT></P></BLOCKQUOTE>
<P>You can override this default location by creating a <FONT 
face="Courier New, Courier, mono" color=#000099 size=2>soap.xml</FONT> file 
containing the path and file name of a services configuration file. The Apache 
SOAP web application's deployment descriptor also needs to be modified to refer 
to the location of the soap.xml configuration file.</P>
<P>If you've already deployed SOAP services using the default services 
configuration file, copy the content of the <FONT 
face="Courier New, Courier, mono" color=#000099 
size=2>DeployedServices.ds</FONT> file to the new location of the services 
configuration file. (You may change the name of the file as desired).</P>
<P>To change the default location of the services configuration file, you must 
follow these steps:</P>
<P>1. Create a <FONT face="Courier New, Courier, mono" color=#000099 
size=2>soap.xml</FONT> file containing a pointer to the new location of the 
services configuration file.<BR>2. Open <FONT face="Courier New, Courier, mono" 
color=#000099 size=2>soap.war</FONT> in Deployment Tool<BR>3. Add initialization 
parameters to the rpcrouter and messagrouter servlets. These parameters point to 
the location of a new <FONT face="Courier New, Courier, mono" color=#000099 
size=2>soap.xml</FONT> file.<BR>4. Copy old <FONT 
face="Courier New, Courier, mono" color=#000099 
size=2>DeployedServices.ds</FONT> file to new location. (optional)<BR>5. Redploy 
the <FONT face="Courier New, Courier, mono" color=#000099 size=2>soap.war</FONT> 
module.<BR>6. Restart the application server.</P>
<H2>Creating the soap.xml File</H2>
<P>By default, the <FONT face="Courier New, Courier, mono" color=#000099 
size=2>soap.xml</FONT> file does not exist in a simple installation of Apache 
SOAP. If you want to change the location of the services configuration file, you 
must create a <FONT face="Courier New, Courier, mono" color=#000099 
size=2>soap.xml</FONT> file that refers to the new services configuration file. 
(In the next section, you will modify the web application to point to the 
location of the <FONT face="Courier New, Courier, mono" color=#000099 
size=2>soap.xml</FONT> file).</P>
<P>For the purposes of specifying the location of a service configuration file, 
the <FONT face="Courier New, Courier, mono" color=#000099 size=2>soap.xml</FONT> 
file takes the following form:</P>
<BLOCKQUOTE><PRE><FONT color=#000099>&lt;soapServer&gt;<BR>  &lt;configManager value="org.apache.soap.server.DefaultConfigManager" &gt;<BR>	&lt;option name="filename" value="d:\soap-2_3\DeployedServices.ds" /&gt;<BR>  &lt;/configManager&gt;<BR>&lt;/soapServer&gt;</FONT></PRE></BLOCKQUOTE>
<H2>Adding ConfigFile Servlet Initialization Parameter</H2>
<P>In the <FONT face="Courier New, Courier, mono" color=#000099 
size=2>web.xml</FONT> file, the initialization parameters in the web application 
deployment descriptor takes the following form:</P>
<BLOCKQUOTE><PRE><FONT color=#000099>&lt;servlet&gt;<BR>  &lt;servlet-name&gt;messagerouter&lt;/servlet-name&gt;<BR>  &lt;display-name&gt;Apache-SOAP Message Router&lt;/display-name&gt;<BR>  &lt;servlet-class&gt;org.apache.soap.server.http.MessageRouterServlet&lt;/servlet-class&gt;<BR>  &lt;init-param&gt;<BR>    &lt;param-name&gt;faultListener&lt;/param-name&gt;<BR>    &lt;param-value&gt;org.apache.soap.server.DOMFaultListener&lt;/param-value&gt;<BR>  &lt;/init-param&gt;
  <B>&lt;init-param&gt;<BR>    &lt;param-name&gt;ConfigFile&lt;/param-name&gt;<BR>    &lt;param-value&gt;d:\soap-2_3\soap.xml&lt;/param-value&gt;<BR>  &lt;/init-param&gt;</B><BR>&lt;/servlet&gt;</FONT></PRE></BLOCKQUOTE>
<P>The new<FONT size=2> <FONT face="Courier New, Courier, mono" 
color=#000099>&lt;init-param&gt;</FONT></FONT> must be added to the <FONT 
face="Courier New, Courier, mono" color=#000099 size=2>&lt;servlet&gt;</FONT> 
section for both the <FONT face="Courier New, Courier, mono" color=#000099 
size=2>messagerouter</FONT> and <FONT face="Courier New, Courier, mono" 
color=#000099 size=2>rpcrouter</FONT> servlets.</P>
<P>To make this change via the Deployment Tool, follow these steps:</P>
<OL>
  <LI>Start the Deployment Tool and open the <FONT 
  face="Courier New, Courier, mono" color=#000099 size=2>soap.war</FONT> file 
  that you modified earlier. 
  <LI>Click on the WAR module and click on <I>Componenet View</I>. 
  <LI>Select the <FONT face="Courier New, Courier, mono" color=#000099 
  size=2>messagerouter</FONT> servlet, right click, and select <I>Edit 
  Descriptor</I>. 
  <LI>Under the <I>Init Param</I> tab, add a new parameter matching the 
  description above. 
  <LI>Repeat for the <FONT face="Courier New, Courier, mono" color=#000099 
  size=2>rpcrouter</FONT> servlet. 
  <LI>Close the descriptor windows and save the WAR file. 
  <LI>Redeploy the WAR file and restart the application server. </LI></OL>
<P>Now comment out the undeploy steps in several of the sample <FONT 
face="Courier New, Courier, mono" color=#000099 size=2>testit</FONT> scripts for 
the sample applications. Then rerun these scripts. Restart the application 
server and use the Apache SOAP administrative interface to ensure that the 
service configuration was persisted to the new configuration file. Open the 
services configuration file in an editor to double check that the services are 
being registered in the new file.</P>
<HR width="100%" SIZE=1>
</BODY></HTML>
JRun.html (text/html, 2.8 KB)
<html>

<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>Apache SOAP Installation Instructions for JRun 3.0</title>
</head>

<body bgcolor="#FFFFFF">

<h1 align="center">Apache-SOAP Version 2.3: Installing the Server-Side Under JRun 3.0</h1>

<p><strong>IMPORTANT</strong>: JRun comes with an XML parser, which will by default hide Xerces and therefore cause problems with your SOAP installation.  Please follow step 1 below!</p>

<ol>

<li>Open up JRun's global.properties file (in <code>path-to-JRun/lib</code>)
and add the Xerces .jar file to the beginning of the jrun.classpath line.
Mine looks like this:
<br>
<blockquote><code>jrun.classpath=E:/xerces-1_2_3/xerces.jar;{jrun.rootdir}/lib/ext;{jrun.rootdir}/lib/jrun.jar;{jrun.rootdir}/lib/install.jar</code></blockquote>
<li>Go into the JMC, and select the "Web Applications" section of your server
(I use the JRun Default Server).  Click on "deploy an application".<br>
<br>
<li>Select the Apache-SOAP /webapps/soap directory (under java/ in the source distribution, or off the root directory of the binary dist.) in the "Servlet War File
or Directory" box.<br>
<br>
<li>Name the application (I call it "xml-soap"), and pick a base URL (I use
"/soap")<br>
<br>
<li>Select a deploy directory (I use the default, which is JRun's default
server directory, plus the name of the app, so for me it ends up being <code>C:/JRun/servers/default/xml-soap</code><br>
<br>
<li>Click "deploy"<br><i>(at this point you should get a message telling you the app has been successfully deployed)</i>
<br>
<br>
<li>Go to the "java settings" area of your default server, and add the
Apache-SOAP jar file and base directory to the classpath.  For the source distribution, these would be <code>SOAPROOT/java/build/lib/soap.jar</code> and <code>SOAPROOT/java/build</code>.  For the binary distribution, they would be <code>SOAPROOT/lib/soap.jar</code> and <code>SOAPROOT</code>.  Mine looks like this (source dist, living at D:/xml-soap):<br>
<pre>{jrun.rootdir}/servers/lib
{jrun.server.rootdir}/lib
D:/xml-soap/java/build/lib/soap.jar
D:/xml-soap/java/build</pre>
<li>Restart the server.  <b>NOTE: You must shut down and restart BOTH the admin
server and the default server for the change you made to the
global.properties file to take.  That only needs to be done once.</b><br>
<br>
<li>Try it out - access <a href="http://localhost/soap/servlet/rpcrouter">http://localhost/soap/servlet/rpcrouter</a> and see
if you get the "I can't do GET" message.</ol>

If the above worked, you know the servlet was succesfully installed.  You should now be able to deploy services by pointing your browser at:

<blockquote><a href="http://localhost/soap/index.html">http://localhost/soap/index.html</a></blockquote>

<p>Happy SOAP-ing!</p>
</body>
</html>
tomcat.html (text/html, 3.6 KB)
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Apache SOAP &amp; Tomcat Installation Instructions</title>
</head>

<body bgcolor="#FFFFFF">

<h1 align="center">Apache-SOAP Version 2.3: Installing the Server Side
Under Apache Tomcat v3.2</h1>

<h2>Getting Tomcat ready:</h2>

<p><strong>IMPORTANT</strong>: Tomcat comes with an XML parser (lib/xml.jar)
which has the DOM level 1 interfaces. Even if you put Xerces 1.1.2's
xerces.jar in your classpath, the wrong interfaces are found by
any Java code running in Tomcat because the shell script / batch
file that runs Tomcat puts the user's classpath at the end. So,
you must edit tomcat.sh or tomcat.bat in the bin/ directory and
put xerces.jar at the BEGINNING of the classpath the script
builds. </p>

<p>If you run startup.bat, then line 105 (or there abouts) of <b>tomcat.bat</b>
should look like this (line 69 for Tomcat 3.2.1) :</p>

<blockquote>
    <code>set CP=path-to-xerces\xerces.jar;%CLASSPATH%;%CP%</code>
</blockquote>

<p>If you run startup.sh, add the following line to  <b>tomcat.sh</b> after
line 113 (or there abouts), so long as it's before the export line:</p>

<blockquote>
    <code>CLASSPATH=path-to-xerces/xerces.jar:${CLASSPATH}</code>
</blockquote>

<h2>Deploying Apache-SOAP on Tomcat:</h2>

<p>There are two different ways to actually deploy Apache SOAP on Tomcat:</p>

<h3>Method 1: Deploying the web archive.</h3>

<p>The Apache SOAP distribution includes a web archive at <code>/soap-2_3/webapps/soap.war</code>.
Simply drop this web archive into Tomcat's webapps directory (i.e. <code>%tomcat_home%/webapps</code>).
If you deploy Apache SOAP into Tomcat in this manner, you will not need to have anything from the
<code>/soap-2_3</code> directory on your server's classpath (the relevant items are included in the web
archive). Note: If you copy the web archive into the webapps directory while Tomcat is running, Tomcat
will need to be restarted before the Apache SOAP web application can be accessed.</p>

<p>Keep in mind that if you want to replace the deployed Apache SOAP web application with a
later version that you will probably have to shut the server down, remove the expanded
<code>%tomcat_home%/webapps/soap</code> directory, and replace the
<code>%tomcat_home%/webapps/soap.war</code> file with the newer one.</p>

<h3>Method 2: Creating a new &lt;Context&gt; in Tomcat's server.xml file.</h3>

<p>Simply add a new <code>&lt;Context&gt;</code> element into
<code>%tomcat_home%/conf/server.xml</code>:</p>

<code>&lt;Context path=&quot;/soap&quot; docBase=&quot;path-to-apache-soap/webapps/soap&quot;
         debug=&quot;1&quot; reloadable=&quot;true&quot;&gt;
&lt;/Context&gt;</code>

<p>Now, make sure you have the jar files from the lib directory
of this distribution on your classpath and start up tomcat. Also,
you will want to have on the classpath any of your code that you
want to deploy as services (e.g. <code>/soap-2_3</code> if you want to deploy
any of the included samples).</p>

<h2>Accessing the Apache SOAP context:</h2>

<p>You should be able to deploy services by pointing a browser to</p>

<blockquote>
    <code><a href="http://hostname:port/soap">http://hostname:port/soap</a></code>
</blockquote>

<p>where hostname is the host on which Tomcat is running and port
is the port. See the User's Guide for details on the
administration tool. The SOAP end-point for invoking services on
this server is:</p>

<blockquote>
    <code><a href="http://hostname:port/soap/servlet/rpcrouter">http://hostname:port/soap/servlet/rpcrouter</a></code>
</blockquote>

<p>Happy SOAP-ing!</p>
</body>
</html>
weblogic51.html (text/html, 2.2 KB)
<html>

<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>Apache SOAP Installation Instructions</title>
</head>

<body bgcolor="#FFFFFF">

<h1 align="center">Apache-SOAP Version 2.3: Installing the Server-Side Under WebLogic 
  Application Server 5.1</h1>

<p><strong>IMPORTANT</strong>: WebLogic comes with an XML parser. So, you must 
  edit startWeblogic.cmd or startWeblogic.sh in the weblogic root directory and 
  put xerces.jar at the BEGINNING of WEBLOGIC_CLASSPATH environment variable.</p>

<p>If you run startWeblogic.cmd, then add following at the beginning of WEBLOGIC_CLASSPATH 
  setting at line 74:</p>

<blockquote>
  <pre>path-to-xerces\xerces.jar;path-to-apache-soap\lib\soap.jar</pre>
</blockquote>

<p>If you run startWeblogic.sh, add the following to PRE_CLASSPATH setting at 
  line 33:</p>

<blockquote>
  <pre>path-to-xerces/xerces.jar:path-to-apache-soap/lib/soap.jar</pre>
</blockquote>

<p>The easiest way to set up for WebLogic is to:</p>
<p>1. Copy the path-to-apache-soap/webapps/soap directory into path-to-weblogic-root/myserver/public_html 
  directory. After copying the directory structure looks like path-to-weblogic/myserver/public_html/soap/WEB-INF 
  etc. </p>
<p>2. Add the following two lines to weblogic.properties file -
weblogic.httpd.register.soap/servlet/rpcrouter=org.apache.soap.server.http.RPCRouterServlet 
  weblogic.httpd.initArgs.soap/servlet/rpcrouter=ServicesStore=DeployedServices.ds 
</p>
<p>If you want to run the samples from Apache-SOAP make sure to add <path-to-apache-soap> 
to WEBLOGIC_CLASSPATH or PRE_CLASSPATH as explained above.</p>

<p>You should be able to deploy services by pointing a browser to</p>

<blockquote>
    <pre><a href="http://hostname:port/soap">http://hostname:port/soap</a></pre>
</blockquote>

<p>where hostname is the host on which WebLogic is running and port is the port. 
  See the User's Guide for details on the administration tool. The SOAP end-point 
  for invoking services on this server is:</p>

<blockquote>
    <pre><a href="http://hostname:port/soap/servlet/rpcrouter">http://hostname:port/soap/servlet/rpcrouter</a></pre>
</blockquote>

<p>Happy SOAP-ing!</p>
</body>
</html>
weblogic60.html (text/html, 3.3 KB)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0037)http://www.almaer.com/weblogic60.html -->
<HTML><HEAD><TITLE>Apache SOAP Installation Instructions - BEA Weblogic 6.0</TITLE>
<META http-equiv=Content-Type content="text/html; charset=windows-1252">
<META content="Dion Almaer" name=author>
<META content="MSHTML 5.50.4613.1700" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff>
<H1 align=center>Apache-SOAP Version 2.3: Installing the Server-Side Under BEA 
WebLogic Application Server 6.0</H1>
<P>Installing SOAP with BEA WebLogic is very straight foreward. <BR>The steps 
are: <BR>
<UL>
  <LI>Install the soap web app 
  <LI>Put the soap.jar into the web app's classpath 
  <LI>Access the soap web app 
  <LI>Optionally: switch out for a new xerces parser 
  <LI>Optionally: configure the soap.xml </LI></UL><BR>
<H2>Install the soap web app</H2>Copy the /path-to-apache-soap/webapps/soap to 
your applications directory For example: To install into the "mydomain" plug the 
directory into: <BR>c:/bea/wlserver6.0/mydomain/application/soap <BR>
<H2>Put the soap.jar into the web app's classpath</H2>1. Make a directory 
c:/bea/wlserver6.0/mydomain/application/soap/WEB-INF/lib <BR>2. Copy soap.jar to 
that lib directory <BR>
<H2>Access the soap web app</H2>
<P>You should be able to deploy services by pointing a browser to</P>
<BLOCKQUOTE><PRE><A href="http://hostname:port/soap">http://hostname:port/soap</A></PRE></BLOCKQUOTE>
<P>where hostname is the host on which WebLogic is running and port is the port. 
See the User's Guide for details on the administration tool. The SOAP end-point 
for invoking services on this server is:</P>
<BLOCKQUOTE><PRE><A href="http://hostname:port/soap/servlet/rpcrouter">http://hostname:port/soap/servlet/rpcrouter</A></PRE></BLOCKQUOTE><BR>
<H2><I>Optionally</I> switch out for a new xerces parser</H2>WebLogic 6.0 
bundles the xerces parser already. If you want to use your own xerces.jar you 
will have to edit your start script, and make sure that the CLASSPATH has 
xerces.jar at the beginnning, so those classes get loaded before the ones in the 
weblogic.jar. <BR>
<H2><I>Optionally</I> configure the soap.xml</H2><I>NOTE: For some reason I had 
to configure this, else I got an error writing to the .ds file</I> <BR><BR>1. 
Configure the web application to point to a soap.xml config file. <BR>Edit the 
web.xml file and add another initialization parameter. (e.g. 
c:\bea\wlserver6.0\config\mydomain\applications\soap\WEB-INF\web.xml) <PRE>    &lt;init-param&gt;
      &lt;param-name&gt;ConfigFile&lt;/param-name&gt;
      &lt;param-value&gt;c:\BEA\wlserver6.0\config\mydomain\applications\soap\soap.xml&lt;/param-value&gt;
    &lt;/init-param&gt;
</PRE>2. Configure the soap.xml (e.g. 
c:\BEA\wlserver6.0\config\mydomain\applications\soap\soap.xml) <PRE>	&lt;!-- Sample Apache SOAP Server Configuration File --&gt;
	&lt;soapServer&gt;
	  &lt;!-- This section defines the same thing you get if you don't --&gt;
	  &lt;!-- specify anything at all - aka the default                --&gt;
	  &lt;configManager value="org.apache.soap.server.DefaultConfigManager" &gt;
		&lt;option name="filename" value="c:\BEA\wlserver6.0\config\mydomain\applications\soap\DeployedServices.ds" /&gt;
	  &lt;/configManager&gt;
	&lt;/soapServer&gt;
</PRE>
<P>Happy SOAP-ing!</P></BODY></HTML>
websphere.html (text/html, 5.2 KB)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>

<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<META name="GENERATOR" content="IBM WebSphere Homepage Builder V4.0.0 for Linux">
<title>WebSphere SOAP Installation Instructions</title>
</head>

<body bgcolor="#FFFFFF">

<h1 align="center">Apache-SOAP Version 2.3: Installing the Server-Side
Under IBM WebSphere Advanced Edition</h1>

<p>These instructions assume:</p>
<ul>
<li>WinNT 4.0 (similar for other platforms)</li>
<li>WebSphere Advanced Edition 3.5 with at least
  fix pack 2</li>
</ul>
<HR>
<p><strong>IMPORTANT</strong><BR>
WebSphere comes with an XML parser (WebSphere\AppServer\lib\xml4j.jar)
which uses DOM level 1 interfaces. <BR><BR>
If you are using at least fixpack 4, or have
efix PQ47050 installed, then you need to
add the following string to the command line
arguments for each application server:<BR>
<CODE>
-classpath ....:xxx/xerces.jar...</CODE><BR>
Substitute the directory where you have stored
the jar for the xxx. If you are using Windows,
then use a semi-colon instead of a colon.
Restart the server so that the classpath
takes effect.<BR>
<BR>
If you do not have the above fix installed
then even if you put the Xerces 1.1.2's (or
later) xerces.jar in your classpath, the
wrong interfaces are found by any Java code
running in WebSphere because WebSphere puts
the user's classpath at the end. In that
case you must edit WebSphere\AppServer\bin\admin.config
file and put xerces.jar at the BEGINNING
of the <code>com.ibm.ejs.sm.adminserver.classpath=</code> variable
</p>
<HR>
<p>To set up a SOAP server:
   
<UL><li><p>From the WebSphere menu off of the NT Start menu:
   <ol>
      <li><p>Launch "Start Admin Server" and wait until it completes.</li>
      <li><p>Launch "Administrator's Console".</li>
   </ol></li><li><p>From the Administrator's Console:
   
  <ol> 
      <li><p>Console/Tasks/Create Application Server<ol> 
         <li><p>Select Web Applications:  You do not need Enterprise Beans for SOAP.  Next</li>
         <li><p>Application Server Properties: set the 
            Application Server Name to "SOAP" (or another name of your choice).  Next</li>
         <li><p>Application Server Start Option: "Do not start the server automatically after creating it".
             Next</li>
         <li><p>Node Selection: select your node.  Next</li>
         <li><p>Select Virtual Host: select "default_host".  Next</li>
         <li><p>Servlet Engine Properties: take the defaults.  Next</li>
         <li><p>Web Application Properties: Set the Web Application Web Path to "/soap".
             You can use any web path you like, including the WebSphere default of 
             "/webapp/SoapWebApp", but using "/soap" keeps the URLs simple and is used 
             in these instructions.  Next</li>
         <li><p>Specify System Servlets: Enable JSP 1.0 or 1.1.</li>
         <li><p>Finish to create the SOAP Application Server.</li>
      </ol></li>
      
      </OL>
  </li><li><p>In the tree view, open the SoapWebApp, and select the Advanced tab:
      <ol> 
         <li><p>Change Document Root to "C:\install-dir\soap-2_3\webapps\soap".</li>
         <li><p>Set the classpath to
         <ul>
            <li><p><code>C:\XML\apache\soap-2_3\lib\soap.jar</code></li>
            <li><p><code>C:\XML\apache\soap-2_3</code></li>
            <li><p><code>C:\tools\BSF\lib\bsf.jar</code></li>
            <li><p><code>C:\tools\BSF\lib\bsfengines.jar</code></li>
            <li><p><code>C:\Tools\Rhino\js.jar</code></li>
            <li><p><code>C:\Tools\Rhino\jstools.jar</code></li>
            <li><p><code>your SOAP server classes, if any</code></li>
         </ul></ol></li><li><p>Console/Tasks/Add a Servlet</li></UL>
<ol> 
         <li>Servlet: "No".  Do not start the server automatically after creating it.  Next</li>
         <li>Servlet: Select the "SOAPWebApp" web app to contain the servlet.  Next</li>
         <li>Servlet: Select "create user-defined servlet".  Next</li>
         <li>Servlet: 
         <ol>
            <li>Set the servlet name to "rpcrouter"</li> 
            <li>Set the servlet class name to "org.apache.soap.server.http.RPCRouterServlet".</li> 
            <li>Add "default_host/soap/servlet/rpcrouter" to the servlet web path list.
                Note that you only need to type "servlet/rpcrouter" on the dialog that pops up.</li>
         </ol>
         Next</li>
         <li>Servlet: Take the defaults.</li>
         <li>Finish</li>
      <li>Start the "SOAP" Server</li></ol>
      

      
   
   



<p>You can list and deploy SOAP services by pointing a browser to</p>

<blockquote>
    <pre><a href="http://localhost:80/soap/admin">http://hostname:port/soap/admin</a></pre>
</blockquote>

<p>Alternatively, you can deploy services by setting up your classpath and using</p>

<blockquote>
<pre>
java org.apache.soap.server.ServiceManagerClient 
     http://hostname:port/soap/servlet/rpcrouter 
     deploy &lt;DeploymentDescriptor.xml&gt;
</pre>
</blockquote>

<p>See the User's Guide for details on the aministration tool. 
The SOAP end-point for invoking services on this server is:</p>

<blockquote>
    <pre><a href="http://localhost/soap/servlet/rpcrouter">http://hostname:port/soap/servlet/rpcrouter</a></pre>
</blockquote>

<p>Happy SOAP-ing!</p>
</body>
</html>
websphere-j.html (text/html, 6 KB)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>

<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-2022-jp">
<META name="GENERATOR" content="IBM HomePage Builder 2001 V5.0.3 for Windows">
<title>WebSphere SOAP Installation Instructions</title>
</head>

<body bgcolor="#FFFFFF">

<P>
<i>
$BLu!'F|K\%"%$!&%S!<!&%(%`(B($B3t(B) $B%=%U%H%&%'%";v6HIt(B $BJF;}(B $B9,<w(B

<blockquote>
<font color="blue">
$B$3$N%I%-%e%a%s%H$O!"(BApache SOAP 2.0$B%l%Y%k$N$b$N$rF|K\8lLu$7$?$b$N$G!"(B
$B:G?7HG$N$b$N$H$O0[$J$k2DG=@-$,$"$j$^$9!#$^$?!"%&%'%V>e$G8+$k>l9g!"0lIt(B
$B$N%j%s%/$,@Z$l$F$$$k2DG=@-$,$"$j$^$9!#(BApache SOAP$B$N%G%#%l%/%H%j$N3:Ev(B
$B%U%!%$%k$HCV$-49$($k$3$H$G!"%*%j%8%J%k$N%Z!<%8$K%j%s%/$5$;$k$3$H$,$G$-(B
$B$^$9!#(B
</font>
</blockquote>
</i>
</P>

<h1 align="center">Apache-SOAP Version 2.0: <BR>
IBM WebSphere Advanced Edition $B$X$NF3F~<j=g(B</h1>

<p>$B0J2<$N<j=g$O<!$N4D6-$KF3F~$9$k$3$H$rA0Ds$K$7$F$$$^$9!#(B:</p>
<ul>
<li>WinNT 4.0 ($BB>$N%W%i%C%H%U%)!<%`$G$b$@$$$?$$F1$8$G$9(B)</li>
<li>WebSphere Advanced Edition 3.5 with fix pack
  2 (SOAP 2.0 $B$K$O!"(BServlet API$B!!(B2.2$B!!$,I,MW$G$9(B)</li>
</ul>

<p><strong>$B=EMW(B</strong>$B!'(B<BR>
WebSphere $B$K$O!"(BDOM level1 $B%$%s%?!<%U%'%$%9$r;H$&(B
XML parser (WebSphere\AppServer\lib\xml4j.jar)
$B$,IU$$$F$-$^$9!#%f!<%6!<$N%/%i%9%Q%9$K(B Xerces
1.1.2$B!J$^$?$O$=$l0J9_!K$N(B xerces.jar $B%U%!%$%k$rDI2C$9$k$H!"(BWebSphere
$B$NCf$GF0$/%3!<%I$O4V0c$C$?%$%s%?!<%U%'%$%9$r8+$D$1$F$7$^$7$^$9!#$3$l$O!"(BWebSphere
$B$,%f!<%6!<$N%/%i%9%Q%9$r:G8e$KDI2C$9$k$?$a$G$9!#$=$3$G!"(BWebSphere\AppServer\bin\admin.config$B!!%U%!%$%k$rJT=8$7$F!"(Bxerces.jar
$B%U%!%$%k$,(B <CODE>com.ibm.ejs.sm.adminserver.classpath=</CODE> $B$NCM$N@hF,$KMh$k$h$&$K$7$^$9!#(B</p>
<H2>SOAP $B%5!<%P!<$N%;%C%H%"%C%W(B:</H2>
<UL>
  <li>NT$B%9%?!<%H%a%K%e!<$N!V(BWebSphere$B!W%a%K%e!<$+$i(B:
  <ol>
    <li>$B!V(BStart Admin Server$B!W(B $B$r<B9T$7$F=*$o$k$^$GBT$A$^$9!#(B</li>
    <li>$B!V4IM}%3%s%=!<%k!W$r5/F0$7$^$9!#(B</li>
  </ol>
  $B!!(B<BR>
  </li>
  <LI>$B4IM}%3%s%=!<%k$+$i(B:
  <ol>
    <LI>$B%3%s%=!<%k(B/$B%?%9%/(B/$B%"%W%j%1!<%7%g%s!&%5!<%P!<$N:n@.(B
    <ol>
      <li>$B!V(BWeb $B%"%W%j%1!<%7%g%s!W$rA*Br!'!V<!$X!W(B</li>
      <li>$B%"%W%j%1!<%7%g%s!&%5!<%P!<$N%W%m%Q%F%#!<!'%"%W%j%1!<%7%g%s!&%5!<%P!<L>$r!V(BSOAP$B!JJL$NL>A0$G$b9=$$$^$;$s!K!W$H$7$F$/$@$5$$!#!V<!$X!W(B</li>
      <li>$B%"%W%j%1!<%7%g%s!&%5!<%P!<3+;O%*%W%7%g%s!'!V%5!<%P!<$r:n@.$7$?8e$K<+F0E*$K3+;O$7$J$$!W$rA*Br$7$F!V<!$X!W(B</li>
      <li>$B%N!<%I$NA*Br!'$4<+J,$N%N!<%I$rA*Br$7$F!V<!$X!W(B</li>
      <li>$B2>A[%[%9%H$NA*Br!'!V(Bdefault_host$B!W$rA*Br$7$F!V<!$X!W(B</li>
      <li>$B%5!<%V%l%C%H!&%(%s%8%s$N%W%m%Q%F%#!<!'%G%#%U%)%k%H$N$^$^$G!V<!$X!W(B</li>
      <LI>$B%&%'%V!&%"%W%j%1!<%7%g%s$N%W%m%Q%F%#!<!'(B
      Web$B%"%W%j%1!<%7%g%s!&%Q%9$r!V(B/soap$B!W$K@_Dj$7$^$9!#(B/webapp/SoapWebApp
      $B$N$^$^$G$b9=$$$^$;$s$,!V(B/soap$B!W$N$[$&$,C;$/$F:Q$_$^$9$7!"$3$N<j=g$NCf$G$b$3$l$r;H$$$^$9!#$3$3$G!"!V(B/soap$B!W$K$7$J$+$C$?>l9g!"$"$H$N#U#R#L$K1F6A$7$^$9$N$G!"!V(B/soap$B!W$K$7$F$*$/$3$H$r$*A&$a$7$^$9!#!V<!$X!W(B
      <li>$B%7%9%F%`!&%5!<%V%l%C%H$N;XDj!'!V(BJSP 1.0$B!W$+!V(BJSP
      1.1 $B$r;HMQ2DG=$K$9$k!W(B</li>
      <li>$B!V=*N;!W$r2!$9$H(B SOAP $B%"%W%j%1!<%7%g%s!&%5!<%P!<$,:n@.$5$l$^$9!#(B</li>
    </ol>
  </OL>
  $B!!(B<BR>
  <LI>$B%D%j!<I=<($+$i!V(BSoapWebApp$B!W$rA*Br$7!"!V3HD%!W%?%V$rA*Br$7$^$9!#(B
  <ol>
    <li>$BJ8=q%k!<%H$r(B &quot;C:\install-dir\soap-2_0\webapps\soap&quot;
    $B$KJQ99$7$^$9!#(B</li>
    <li>$B%/%i%9%Q%9$r0J2<$N$h$&$K@_Dj$7$^$9!#(B
    <ul>
      <li><code>C:\install-dir\soap-2_0\lib\soap.jar</code></li>
      <li><code>C:\install-dir\soap-2_0</code></li>
      <li>$BI,MW$K1~$8$F$"$J$?$N(BSOAP$B%5!<%P!<%/%i%9(B</li>
    </ul>
  </ol>
  $B!!(B<BR>
  <li>$B%3%s%=!<%k(B/$B%?%9%/(B/$B%5!<%V%l%C%H$NDI2C(B
  <ol>
    <li>$B%5!<%V%l%C%H!'(B $B!V$$$$$(!W$rA*Br$7$F!V<!$X!W(B</li>
    <li>$B%5!<%V%l%C%H!'(B $B%5!<%V%l%C%H$rG[CV$9$k%5!<%P!<$H$7$F!V(BSOAPWebApp$B!W$rA*Br$7$F!V<!$X!W(B</li>
    <li>$B%5!<%V%l%C%H!'(B $B!V%f!<%6!<Dj5A%5!<%V%l%C%H!W$rA*Br$7$F!V<!$X!W(B</li>
    <li>$B%5!<%V%l%C%H!'(B
    <ol>
      <li>$B%5!<%V%l%C%HL>$r!V(Brpcrouter$B!W$H;XDj(B</li>
      <li>$B%/%i%9L>$r!V(Borg.apache.soap.server.http.RPCRouterServlet$B!W$H;XDj(B</li>
      <LI>$B!V(Bdefault_host/soap/servlet/rpcrouter$B!W$r%5!<%V%l%C%H(BWeb$B%Q%9%j%9%H$KDI2C!#%@%$%"%m%0!&%]%C%W%"%C%W$K$O!V(Bservlet/rpcrouter$B!W$H$@$1F~NO$7$^$9!#(B
    </ol>
    $B!V<!$X!W(B</li>
    <li>$B%5!<%V%l%C%H!'(B $B%G%#%U%)%k%H$G7k9=$G$9!#(B</li>
    <li>$B!V=*N;!W(B</li>
  </ol>
  $B!!(B<BR>
  </li>
  <LI>$BF1MM$N<j=g$G!V(Bmessagerouter$B!W%5!<%V%l%C%H$b:n@.$7$^$9(B
  <UL>
    <LI>$B%5!<%V%l%C%HL>!V(Bmessagerouter$B!W(B
    <LI>$B%/%i%9L>!V(Borg.apache.soap.server.http.MessageRouterServlet$B!W(B
    <LI>$B%Q%9%j%9%H$K!V(Bdefault_host/soap/servlet/messagerouter$B!W$rDI2C(B
  </UL>
  $B!!(B<BR>
  <li>SOAP$B%5!<%P!<$r5/F0$7$^$9!#(B</li>
</UL>
<p>SOAP$B%5!<%S%9$r0lMwI=<($7$?$jG[CV$9$k%Z!<%8$r<!$N(BURL$B$GI=<($G$-$^$9!#(B</p>

<blockquote>http://$B%[%9%HL>!'%]!<%HHV9f(B/soap/admin
<pre>$B$b$7!"%m!<%+%k%5!<%P!<$,%G%#%U%)%k%H@_Dj$K$J$C$F$$$l$P!"<!$N(BURL$B$G%"%/%;%9$G$-$^$9!#(B
<a href="http://localhost:80/soap/admin">http://localhost/soap/admin</a></pre>
</blockquote>

<p>$BJL$NJ}K!$H$7$F!"<!$N%3%^%s%I$r%/%i%9%Q%9$r@5$7$/@_Dj$7$F<B9T$9$l$PG[CV$,$G$-$^$9!#(B</p>

<blockquote>
<pre>
java org.apache.soap.server.ServiceManagerClient 
     http://hostname:port/soap/servlet/rpcrouter 
     deploy &lt;DeploymentDescriptor.xml&gt;
</pre>
</blockquote>

<p>$B4IM}%D!<%k$K4X$7$F$O$5$i$K>\$7$$@bL@$,!V(BUser's
Guide$B!W$K$"$j$^$9!#%5!<%P!<$N%5!<%S%9$r<u$1$k$?$a$N%(%s%I%]%$%s%H$O(B</p>

<blockquote>
    <pre><a href="http://localhost/soap/servlet/rpcrouter">http://hostname:port/soap/servlet/rpcrouter</a></pre>
</blockquote>
<P>$B$G$9!#(B</P>
<p>$B$G$O!"(BSOAP$B$r$*3Z$7$_$/$@$5$$!*(B</p>
</body>
</html>