<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content=
"HTML Tidy for Windows (vers 14 June 2007), see www.w3.org" />
<meta http-equiv="content-type" content="" />
<title>Reference Library</title>
<link href="css/axis-docs.css" rel="stylesheet" type="text/css"
media="all" />
</head>
<body>
<h2>Reference Library</h2>
<p>The Axis Project lives or fails based on its human resources.
Users and contributors alike help the project with ideas and
brainpower. A common foundation of knowledge is required to
effectively participate in this virtual community. The following is
a list of documents that we have found helpful to us and they maybe
helpful to you:</p>
<p>These resources are required reading for anybody contributing
source code to the project.</p>
<p><b><font>SOAP Specific Resources</font></b></p>
<p><b>SOAP W3C Specification</b> <a href=
"http://www.w3.org/TR/2000/NOTE-SOAP-20000508/">1.1</a> and
<a href="http://www.w3.org/TR/soap/">1.2</a><br />
Required reading.</p>
<p><b><a href="http://www.w3.org/TR/SOAP-attachments">SOAP
Messaging with Attachments W3C Specification</a></b><br />
SOAP combined with MIME.</p>
<p><b><a href="http://www.w3.org/TR/SOAP-dsig/">SOAP Security
Extensions: Digital Signature Specification</a></b><br />
Adding security to SOAP.</p>
<p><b>Other Specifications</b></p>
<p>Web Services Description Language (WSDL) <a href=
"http://www.w3c.org/TR/wsdl.html">1.1</a> <a href=
"http://www.w3.org/TR/wsdl20/">2.0</a></p>
<p>WS - Addressing <a href=
"http://www.w3.org/Submission/ws-addressing/">submission</a>
<a href="http://www.w3.org/TR/2005/WD-ws-addr-core-20050331/">1.0
(31st March,2005)</a></p>
<p><a href=
"ftp://www6.software.ibm.com/software/developer/library/ws-policy.pdf">
Web Services Policy Framework (WSPolicy)</a></p>
<p><a href=
"http://www.ws-i.org/Profiles/BasicProfile-1.0.html">WS-I Basic
Profile Version 1.0</a></p>
<p><a href=
"http://jcp.org/aboutJava/communityprocess/first/jsr101/index.html">
Java API for XML-based RPC (JAX-RPC)</a></p>
<p><a href=
"http://www.w3.org/TR/2005/REC-soap12-mtom-20050125/">SOAP Message
Transmission Optimization Mechanism</a></p>
<p><b>Other Resources</b></p>
<p><b><a href="http://java.sun.com/docs/books/jls/index.html">The
Java Language Specification</a></b><br />
Written by the creators of the Java Programming Language, this
online book is considered by many to be the bible for programming
in Java. A must read.</p>
<p><b><a href=
"http://java.sun.com/products/jdk/javadoc/index.html">Javadoc</a></b><br />

Javadoc is the automatic software documentation generator used by
Java, since it was first released. All code written for this
project must be documented using Javadoc conventions.</p>
<p><b><a href=
"http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">The
Java Code Conventions</a></b><br />
This Sun document specifies the de-facto standard way of formatting
Java code. All code written for this project must follow these
conventions.</p>
<p><a href=
"http://svnbook.red-bean.com/en/1.1/svn-book.html"><strong>Version
Control with SubVersion</strong></a><br />
Written by Ben Collins-Sussman, Brian W. Fitzpatrick, C. Michael
Pilato. It provides details on SVN features.</p>
<p></p>
</body>
</html>
