S-integrator 1.0


End to End Guide


Version 0.90

November 4, 2003


by Wayne M Osse




Table of Contents

1 Introduction 5

2 Quick Start 6

3 Installation 7

3.1.Requirements 7

3.1.1.Software 7

3.1.2.Hardware 7

3.2.Downloading 7

3.2.1.Release Builds 7

3.2.2.Intermediate Builds 8

3.2.3.Directories 8

3.3.Installing 8

3.3.1.Java Runtime Environment 9

3.3.2.Database 9

3.3.3.JDBC driver for your database 9

3.3.4.S-integrator 9

4 Running 10

4.1.Startup 10

4.1.1.Start via an environment variable 10

4.1.2.Start by modifying your current working directory 10

4.2.Shut Down 10

4.3.Testing 10

4.3.1.Admin Dashboard 11

4.3.1.1.Startup 11

4.3.1.2.Logging In 11

4.3.1.3.Checking Statistics 11

4.3.1.4.Getting a Statistics Report 11

4.3.1.5.Shut Down the Server 11

4.3.1.6.List Active Services 11

4.3.1.7.Testing a SOAP Service 12

4.3.2.Web Browser 12

4.3.2.1.Running the HelloWorld Service 12

4.3.3.Web Phone 12

4.3.4.Program the Client API 13

4.4.Built-in Service Stores 13

4.4.1.system 13

4.4.2.adminui 13

4.4.3.mainframetest 13

4.4.4.soaptest 13

4.4.5.public 13

4.5.Troubleshooting 13

5 Configuration 15

5.1.Server Configuration 15

5.1.1.Server Configuration File – server.xml 15

5.1.1.1.Server Attributes 15

5.1.1.2.Server Sample 15

5.1.1.3.Authentication Attributes 15

5.1.1.4.Authentication Sample 15

5.1.1.5.Logging Server Attributes 15

5.1.1.6.Logging Server Sample 15

5.1.1.7.Security Service Attributes 15

5.1.1.8.Security Service Sample 16

5.1.1.9.Parser Attributes 16

5.1.1.10.Log Attributes 16

5.1.1.11.Log Samples 16

5.1.2.Service Stores Configuration File – stores.xml 17

5.1.2.1.Service Store Attributes 17

5.1.2.2.Service Store Sample 17

5.2.Service Store Configuration 17

5.2.1.Service Description Files – *Services.xml, *.wsdl 17

5.2.1.1.Native Service Description Files 17

5.2.1.2.Native Service Description Sample 17

5.2.1.3.WSDL Files 18

5.2.2.Service Store Configuration File – store.xml 18

5.2.2.1.HTTP Entrances 18

5.2.2.2.JDBC Destinations 18

5.2.3.Multiple S-integrator Instances 19

6 Service Model 20

6.1.Services 20

6.2.Service Types 20

6.2.1.Atomic ServiceTM 20

6.2.2.Service AgentTM 20

6.2.3.Remote ServiceTM 20

6.2.4.Service FlowTM 20

6.3.Service Inputs and Outputs - Databags 20

7 Developing Services 22

7.1.Atomic Services 22

7.2.Service Agents 23

7.3.Remote Services 24

8 Integrating Software and Systems 25

8.1.Databases 25

8.2.Mainframes 25

8.3.Web Services 25

8.4.Listeners 25

8.4.1.TCP/IP 25

8.4.1.1.IP Host and Address Banning 25

8.5.Inbound Adapters 25

8.5.1.HTTP Inbound Adapter 25

8.5.1.1.IP Host and Address Banning 26

8.5.1.2.Content Filtering 26

8.5.2.SOAP Inbound Adapter 26

8.5.2.1.IP Host and Address Banning 26

8.5.2.2.Content Filtering 26

8.6.Outbound Adapters 26

8.6.1.JDBC Outbound Adapter 26

8.6.2.Mainframe Outbound Adapter 26

8.7.Protocol Support 27

8.7.1.SMTP 27

8.7.2.FTP 27

9 Deploying Services 28

9.1.Initial Deployment 28

9.2.Hot Deployment 28

10 System Services 29

10.1.Authentication, Registration and Session Management 29

10.1.1.Authentication 29

10.1.2.Registration 29

10.1.3.Session Management 29

10.1.4.Service Package Authorization 29

10.1.5.Service Authorization 29

10.1.6.Content Authorization 29

10.2.Authorization 29

10.3.Content Management 29

10.4.Configuration File Management 29

10.5.Administration 29

10.5.1.Server Health 30

10.5.2.Server Management 30

10.5.3.Scheduling 30

10.5.4.Service Management 30

10.5.5.Mail 30

10.5.6.Web Server 30

11 Client API 31

11.1.Interface 31

11.2.Sample 31

1 Introduction


If you are in a hurry, just jump to the “Quick Start” section below and get going!


S-integrator is a open source, service-oriented integration server. Well, It is really a next-generation application server. S-integrator is service container that empowers services with inherent connectivity, integration and security capabilities. This is achieved by isolating the technology that makes a service connected, reusable and secure from the service implemntation. Think about that. A flexible service-oriented architecture must accommodate different inbound and outbound protocols and technologies, including web services. If you use S-integrator to write a service and expose it as a web service, and later want to provide access to it via another protocol or technology, you do not need to change your code, just add the outbound adapter and destination for that protocol or technology! A more likely scenario is that you have an existing service in an external system and you want to make it available initially through a legacy protocol, and then later expose it as a web service. This should be easy to do.


The ability to integrate is often hindered by obstacles that are not obvious. Integration products that require a multitude of other software packages, significant resources, a high price and/or special development licenses all contribute to slowing integration from taking palce, where the rubber meets the road. S-integrator provides a model that can accommodate a myriad of architectures that would have preciously been prohibitive due to cost and/or resource requirements. S-integrator is license under the GNU Lesser General Public License (LGPL), has a small footprint and very few requirements. This facilitates Rapid IntegrationTM, which our company has been providing to customers for almost 15 years.


Just a few notes for those interested. The name S-integrator represents “Service Integrator”. It is written completely in Java, except for one adapter written in 'C' (the Mainframe Adapter).







2 Quick Start

Experienced developers can follow the “Quick Start” instructions below to get up and running quickly.

  1. Download and install a Java runtime, like JRE 1.2.2 or JSRE 1.4.2


  1. Download and install MySQL if you don't have a database and JDBC driver.


  1. Download and unpack the latest S-integrator runtimes


  1. Adjust the JDBC destinations named SYSTEMDB and LOGINDB in

si-1.0x/servicestores/system/Svc-inf/store.xml


  1. Open a shell prompt and change to the S-integrator “/si-1.0x/bin” directory


  1. Set the SI_HOME environment variable to the S-integrator install directory


set SI_HOME=c:\si-1.04 (Windows)


SI_HOME=/usr/localbin/si-1.04 (Unix, Linux)


  1. Start S-integrator by running the shell command for your platform:


%SI_HOME%\bin\startup (Windows)


$SI_HOME/bin/startup.sh (Unix)


sh $SI_HOME/bin/startup.sh (Linux)


  1. Go to http://localhost:8080 in a web browser. If the web page loads, you have already executed a series of S-integrator services. Then log in as administrator with user id “si” and password “si”.

3 Installation

Experienced developers can follow the “Quick Start” instructions in the previous section to get up and running quickly. Detailed installation information and instructions are provided here.

3.1.Requirements

3.1.1.Software

Windows, Linux or Unix


3.1.2.Hardware


3.2.Downloading

3.2.1.Release Builds

Release Builds of S-integrator are released periodically and announced. Each release build resides in its own directories and is available in zip and gzip formats. For example, the S-integrator 1.04 release is available at:


Binary: ftp://ftp.s-integrator.org/s-integrator-1.00/release/v1.04/

§§Source: ftp://ftp.s-integrator.org/s-integrator-1.00/release/v1.04/src/

3.2.2.Intermediate Builds

Intermediate Builds of s-integrator are built periodically from the most

recent sources. These builds are available at:


Binary: ftp://ftp.s-integrator.org/s-integrator-1.00/intermediate/

Source: ftp://ftp.s-integrator.org/s-integrator-1.00/intermediate/src/

3.2.3.Directories

LICENSE LGPL Software License for this release

README.txt Readme file

RELEASE-NOTES-*.txt Release Notes for this release

RUNNING.txt Install & run instructions the server

bin/ Binary executables and scripts

classes/ Global classes

conf/ Configuration files

contentfilters/ Content filters for included Http adapter

lib/ Global classes in JAR files

logs/ Destination directory for log files

servicestores/ Service stores included with S-integrator

servicestores/adminui Administration web server Service Store

servicestores/system System Service Store

servicestores/mainframetest Mainframe Adapter test Service Store

servicestores/soaptest SOAP Adapter test Service Store

servicestores/public Public quick start Service Store

stats/ Contains statistics when used

temp/ Scratch directory for temporary files

work/ Scratch directory for working files


If you wish to build the S-integrator server from a source distribution, please consult the documentation in "BUILDING.txt" in that distribution.


If you wish to install and run a binary distribution of the S-integrator server, please consult the documentation here or the "RUNNING.txt" in the distribution.

3.3.Installing

S-integrator is implemented entirely in Java 1.2.2. In order to install and run this integration broker and service container, you must do the following:

3.3.1.Java Runtime Environment

  1. Download a Java Runtime Environment (JRE) version 1.2.2 or later from http://java.sun.com/j2se/ (like JRE 1.2.2 or JSRE 1.4.2)


  1. Install the JRE according to the instructions included with the release.

3.3.2.Database

  1. Download MySQL from http://www.mysql.com/downloads/mysql-4.0.html if you don't have a database and JDBC driver


  1. Install the database according to the instructions included with the release

3.3.3.JDBC driver for your database

  1. If you use the MySQL, the 3.x and 4.x JDBC drivers for MySQL are included, so you may skip this step.


  1. You can download the MySQL JDBC driver from http://www.mysql.com/downloads/api-jdbc.html

§§

  1. Install the JDBC driver according to the instructions included with the release.

3.3.4.S-integrator

  1. Download a binary distribution of S-integrator from http://www.s-integrator.org/downloads.jsp



  1. Unpack the binary distribution into a convenient location so that the distribution resides in its own directory (conventionally named "S-integrator-1.0"). For the purposes of the remainder of this document, the symbolic name $SI_HOME or %SI_HOME% are used to refer to the full pathname of the release directory.


  1. If you are using MySQL, from the command line, run the following command (%SI_HOME% is the S-integrator installation directory)


mysql < %SI_HOME%/bin/sidb.sql


  1. Update the LOGINDB and SYSTEMDB destinations in the store.xml configuration file in the %SI_HOME%/servicestores/system/Svc_inf/ directory for the database and JDBC driver you are using.

4 Running

4.1.Startup

There are two ways S-integrator 1.0 can be started:

4.1.1.Start via an environment variable

  1. Set the environment variable SI_HOME to the installation path of S-integrator 1.0


  1. Execute the shell command


%SI_HOME%\bin\startup (Windows)


$SI_HOME/bin/startup.sh (Unix)

4.1.2.Start by modifying your current working directory

  1. Execute the following shell commands


cd %SI_HOME%\bin (Windows)

startup (Windows)


cd $SI_HOME/bin (Unix)

/startup.sh (Unix)

4.2.Shut Down

There are two ways to stop S-integrator 1.0:



4.3.Testing

You can test the S-integrator Installation in a number of ways.

4.3.1.Admin Dashboard

4.3.1.1.Startup

Start the Admin UI Dashboard by doing the following:


  1. Open a prompt and change to the S-integrator “bin” subdirectory

  2. Set the SI_HOME environment variable to the install directory

  3. Start AdminUI by running adminui.bat or adminui.sh


All of the following service calls require this log in to occur first.

4.3.1.2.Logging In

  1. Type in the User Id of “si” and Password of “si”

  2. Click on the “Login” button

  3. You will see login information in the “Response” window

4.3.1.3.Checking Statistics

  1. In the “Service” list, choose the “LocalService” service

  2. In the “Method” list, choose the “STAT” method

  3. Click on the “Run” button

  4. You will see statistics information in the “Response” window

4.3.1.4.Getting a Statistics Report

  1. In the “Service” list, choose the “LocalService” service

  2. In the “Method” list, choose the “STATSREPORT” method

  3. Click on the “Run” button

  4. You will see a statistics report in the “Response” window

4.3.1.5.Shut Down the Server

  1. In the “Service” list, choose the “LocalService” service

  2. In the “Method” list, choose the “SHUTDOWN” method

  3. Click on the “Run” button

  4. The server will shut down in five seconds

4.3.1.6.List Active Services

  1. In the “Service” list, choose the “LocalService” service

  2. In the “Method” list, choose the “LISTACTIVESERVICES” method

  3. Click on the “Run” button

  4. You will see a list of active services in the “Response” window

4.3.1.7.Testing a SOAP Service

  1. In the “Protocol” list, choose the “TCP” service

  2. In the “Service” text box type “SP_Test”

  3. In the “Method” text box, type “run”

  4. In the “Port” text box type “8083” (soaptest listens on port 8083)

  5. In the “Request Format” list, choose “FILE”

  6. In the “Response Format” list, choose “FILE”

  7. Click on the “Run” button

  8. You should see SOAP response message in the “Response” window.

4.3.2.Web Browser

The adminui Service Store's WB_WebServer service implements S-integrator's own embedded web server. Go to http://localhost:8080 in a web browser. If the web page loads, you have already executed a series of S-integrator services (otherwise see the Troubleshooting chapter). Then log in as administrator with user id “si” and password “si”

4.3.2.1.Running the HelloWorld Service

  1. Go to http://localhost:8083

  2. Enter your name

  3. Click on the “Submit” button

  4. You will see the hello message in the “Service Results” table at the bottom of the page. Notice that you are an anonymous user. Services in the Public Service Package are available for anyone to run and do not require you to log in as a user. This is not true for administrative services.

4.3.3.Web Phone

The adminui Service Store's WB_WebServer service again provides web access. This test requires you to change the S-integrator adminui Service Store to listen on HTTP on an address that can be accessed from the Internet. Be sure to change your administrator password using HTML on the adminui Service Store first.


Go to http://localhost:8080/login.wml using a web phone that supports WML. If the web page loads, you have already executed a series of S-integrator services (otherwise see the Troubleshooting chapter). Then log in as administrator with user id “si” and password “si”

4.3.4.Program the Client API

The Client API provides the developer with a very easy to use set of classes to call S-integrator services. See the Client API chapter.

4.4.Built-in Service Stores

4.4.1.system

The system Service Store contains services used by S-integrator itself and for managing the system.

4.4.2.adminui

The adminui Service Store contains services monitoring, managing and testing the system. It includes the WB_WebServer service which implements a simple web server for embedded S-integrator management.

4.4.3.mainframetest

The mainframetest Service Store contains sample services for exploring the Mainframe Outbound Adapter.

4.4.4.soaptest

The soaptest Service Store contains sample services for exploring the SOAP Inbound Adapter.

4.4.5.public

The public Service Store provides a prebuilt Service Store to make developing services easy.

4.5.Troubleshooting


Restart S-integrator. Be sure that you replace the "2050" in the URL you're using to access S-integrator (or ”8080” for the admin ui). For example, if you change the port to 2000, you would request the URL http://localhost:2000/.



Right-click on the STARTUP.BAT file. Click on "Properties" then on the "Memory" tab. For the "Initial environment" field, enter in something like 4096.


After you click apply, Windows will create shortcuts in the directory with which you can use to start and stop the container.



In Netscape, this is under Edit/preferences -> Advanced/proxies, and in Internet Explorer, Tools -> Internet Options -> Connections -> LAN Settings.


5 Configuration

5.1.Server Configuration

5.1.1.Server Configuration File – server.xml

The server configuration file is located in the si-1.0x/conf directory and is called server.xml.

5.1.1.1.Server Attributes

operatingMode        “TEST” (always)
storeBase            Service Store subdirectory
workDirectory        Working file subdirectory
tempDirectory        Temporary file subdirectory
debug                ”All”, “Warnings” or “Errors”

5.1.1.2.Server Sample

<Server
operatingMode="TEST"
storeBase="servicestores"
workDirectory="work"
tempDirectory="temp"
debug="All">

5.1.1.3.Authentication Attributes

serviceName        “SA_Session”    - Authentication service

5.1.1.4.Authentication Sample

<Authentication serviceName="SA_Session"></Authentication>

5.1.1.5.Logging Server Attributes

ipAddress         host name to accept logging requests
ipPort            port to accept logging requests
socketTimeout     Timeout for logging requests

5.1.1.6.Logging Server Sample

<LogServer
ipAddress="localhost"
ipPort="2060"
socketTimeout="0">
</LogServer>

5.1.1.7.Security Service Attributes

adminUserId            admin user id
adminPassword          admin password
serviceBrokerProtocol  Protocol to use for security services
serviceBrokerAddress   Security Service Broker host name
serviceBrokerPort      Security Service Broker port

5.1.1.8.Security Service Sample

<ServiceSecurity
adminUserId="si"
adminPassword="si"
serviceBrokerProtocol="HTTP"
serviceBrokerAddress="localhost"
serviceBrokerPort="2050">
</ServiceSecurity>

5.1.1.9.Parser Attributes

The parser entry is currently unused.

5.1.1.10.Log Attributes

Event and Audit logs are provided for each Service Store. The built-in Logging Server provides a TCP listener for logging. Service Stores can alternatively use a file based log.


name                 Log file name prefix
type                 “event” or “audit”
className            Log implementation class
locationType         “tcp” or “file”
location             “address:port” or unused
directory            “directory within Service Store”
debug                ”All”, “Warnings” or “Errors”

5.1.1.11.Log Samples

<Log
name="system_EventLog"
type="event"
className="com.indigotp.is.Log"
locationType="tcp"
location="localhost:2060"
directory="logs"
debug="Errors">
</Log>

<Log
name="system_AuditLog"
type="audit"
className="com.indigotp.is.Log"
locationType="tcp"
location="localhost:2060"
directory="logs"
debug=”Errors">
</Log>

<Log
name="soaptest_EventLog"
type="event"
className="com.indigotp.is.Log"
locationType="file"
location="."
directory="logs"
debug="All">
</Log>

5.1.2.Service Stores Configuration File – stores.xml

The Service Stores configuration file is located in the si-1.0x/conf directory and is called stores.xml.

5.1.2.1.Service Store Attributes

name         Service Store name
storeBase    Service Store subdirectory under the 
		 servicestores subdirectory

5.1.2.2.Service Store Sample

<ServiceStore
name="system"
storeBase="system">
</ServiceStore>

5.2.Service Store Configuration

5.2.1.Service Description Files – *Services.xml, *.wsdl

The Service Store Services configuration files are located in the si-1.0x/servicestores/servicestorename/Svc-inf directory. Service description files must contain entries for services before they can be invoked. There are two types of service description files, S-integrator native and WSDL.

5.2.1.1.Native Service Description Files

NAME         Service name
DESCRIPTION  Service Store text description
TYPE         “Atomic”, “Agent”, “Remote” or “Flow”
METHODS      Methods, descriptive
VERSION      Service version
INTEREST     Area of interest for Service
DESTINATION  Class name of Service
PACKAGE      Service Package name used for authorization

5.2.1.2.Native Service Description Sample

<SERVICES>

<SERVICE>
<NAME>UT_Utils</NAME>
<DESCRIPTION>Utilities Service Agent</DESCRIPTION>
<TYPE>Agent</TYPE>
<METHODS>run</METHODS>
<VERSION>1.0</VERSION>
<INTEREST>Utilities</INTEREST>
<DESTINATIONNAME>UT_Utils</DESTINATIONNAME>
<PACKAGE>Public</PACKAGE>
</SERVICE>

</SERVICES>

5.2.1.3.WSDL Files

WSDL files are in the WSDL format.

5.2.2.Service Store Configuration File – store.xml

The Service Store configuration file is located in the si-1.0x/servicestores/servicestorename/Svc-inf directory.

5.2.2.1.HTTP Entrances

The Service Store's configuration file, store.xml, is located in the Svc-inf directory of the Service Store. It contains Entrances that describe what addresses to listen on. To listen on a TCP address or port different from the default, just change localhost:2050 to the address:port you want. Keep in mind that using a port below 1024 may require administrative rights on your machine. The system Service Store Entrance is shown below.


<Entrance clientAdapter="HTTP">
<Address location="localhost:2050"></Address>
</Entrance>


You will have to restart S-integrator for the changes to take effect.

5.2.2.2.JDBC Destinations

JDBC Destinations have the following attributes in the Service Store's configuration file, store.xml, located in the Svc-inf directory of the Service Store


name                 Logical Destination Name
serverAdapter        “JDBC” (always)
driverClassName      JDBC Driver Class Name
connectionString     JDBC Connection String
user                 Database User Id
password             Database Password
compareType          “STRCMP” (only for MySQL)

Below are the default JDBC Destination entries in the system Service Store:


<Destination
name="LOGINDB"
serverAdapter="JDBC"
driverClassName="org.gjt.mm.mysql.Driver" connectionString="jdbc:mysql:///si?user=siadmin&password=******" user="siadmin"
password="******"
compareType="STRCMP">
</Destination>

<Destination
name="SYSTEMDB"
serverAdapter="JDBC"
driverClassName="org.gjt.mm.mysql.Driver" connectionString="jdbc:mysql:///si?user=siadmin&password=******" user="siadmin"
password="******"
compareType="STRCMP">
</Destination>

5.2.3.Multiple S-integrator Instances

To configure multiple S-integrator 1.0 instances, follow these steps.


In many circumstances, it is desirable to have a single copy of an S-integrator 1.0 binary distribution shared among multiple users on the same server. To make this possible, you must configure a SI_HOME environment variable that points to a directory that is unique to your instance.


When you do this, S-integrator 1.0 will calculate all relative references for files in the following directories based on the value for SI_HOME:


6 Service Model

6.1.Services

A service contains one or more methods and resides within a Service StoreTM. A Service Store has Service Store EntrancesTM and Service Store DestinationsTM. Services are processed as follows:


6.2.Service Types

There are four types of service as described below.

6.2.1.Atomic ServiceTM

A stateless method within a Java class

6.2.2.Service AgentTM

A method with a Java class that does loads once and stays loaded. A smart or intelligent service.

6.2.3.Remote ServiceTM

A service that represents an external system call. A Remote Service uses the outbound adapter that the Destination is bound to

6.2.4.Service FlowTM

A sequence of services, each of which can be of any service type, including another Service Flow

6.3.Service Inputs and Outputs - Databags

S-integrator services access input and output parameters through input and output databags. It is the responsibility of the inbound adapter (Entrance) to convert adapter or protocol specific data to input and output databags so that the service has a simple, consistent interface to parameters. Databags are associative arrays with simple access methods. Normally, a service sets a number of output parameters using service-specific naming.


The “Body” output parameter can be used to package an entire response for convenience. It is also used when calling a Remote Service via a destination. This provides a standard interface for interacting with external systems through outbound adapters.





7 Developing Services

Services can optionally be static, but there is no requirement to be.

New methods have been added to simplify input and output parameter access.

String  service.getInputParameter  ( String  strName ) ;


String  service.setOutputParameter ( String  strName
                                   , String  strValue
                                   ) ;



Object  service.setOutputParameter ( String  strName
                                   , Object  objValue
                                   ) ;

Previously, the following techniques were used to access input and output parameters.

service.databagInput.getDataString ( String  strName
                                   , String  strDefaultValue
                                   , boolean fUseDefaultValue
                                   ) ;

service.databagInput.getData       ( String  strName ) ;



service.databagOutput.add          ( String  strName
                                   , Object  objValue
                                   ) ;

7.1.Atomic Services

Here is the simplest form of an S-integrator service.



import com.indigotp.is.*;

public class HelloWorld
{

  public Service  helloWorld ( Service  service )
  {
	service.setOutputParameter ( "Body", "Hello World!" ) ;

	return service ;	
  }
}

Now allow for an input parameter and check for errors. If a failure occurs, add an event log entry and set the result accordingly.



import com.indigotp.is.*;

public class HelloWorld
{

  public Service  helloWorld ( Service  service )
  {
	String  strName = null ;


	strName = service.getInputParameter ( "Name" ) ;


	if ( strName != null ) {

		service.setOutputParameter ( "Body"
                                       , "Hello from " + strName
						    ) ;
	}
	else {

		String  strErrorCode = "300" ;
		String  strErrorText = "helloWorld - Name not provided" ;

		service.log ( strErrorText, 1 ) ;

		service.setResult ( "300", strErrorText ) ;
	}

	return service ;	
  }
}

7.2.Service Agents

A Service Agent implements “Thread” and the init() method in order to get the configuration for the service. Atomic services also get access to the service configuration, but it is provided as the ”ConfigData” input parameter to each service invocation. Service Agents otherwise look exactly like Atomic Services. Here is a sample of an S-integrator service agent.



import com.indigotp.is.*;

public class HelloWorld extends Thread

  public static Service  init ( Service  service )
  {
        Properties  propConfig = service.getConfiguration ( ) ;
  }

  public Service  helloWorld ( Service  service )
  {
	service.setOutputParameter ( "Body", "Hello World!" ) ;

	return service ;	
  }
}

7.3.Remote Services

A Remote Service is Agent implements “Thread” and the init() method in order to get the configuration for the service. Atomic services also get access to the service configuration, but it is provided as the ”ConfigData” input parameter to each service invocation. Service Agents otherwise look exactly like Atomic Services. Here is a sample of an S-integrator service agent.



import com.indigotp.is.*;

public class HelloWorld extends Thread

  public static Service  init ( Service  service )
  {
        Properties  propConfig = service.getConfiguration ( ) ;
  }

  public Service  helloWorld ( Service  service )
  {
	service.setOutputParameter ( "Body", "Hello World!" ) ;

	return service ;	
  }
}

8 Integrating Software and Systems

8.1.Databases

Databases are integrated using JDBC drivers via the JDBC Outbound Adapter. This supports all major database products and many more. If you have a database and the corresponding JDBC driver, you can easily integrate it by

MySQL drivers are included in the distribution.

8.2.Mainframes

The Mainframe Outbound Adapter provides transactional integration for hosts systems like CICS and IMS. See the Mainframe Adapter section for more information.

8.3.Web Services

S-integrator reads WSDL service descriptions and works in conjunction with the SOAP Inbound Adapter to accept SOAP web service requests.

8.4.Listeners

8.4.1.TCP/IP

The TCP/IP Listener listens for and accepts TCP connections and hands off to Inbound Adapters it is bound to. The HTTP and SOAP Inbound Adapters use it.

8.4.1.1.IP Host and Address Banning

Host names and TCP/IP addresses that are to be blocked can be placed in their corresponding blocked files. These files can be configured in the TCP Listener or Inbound Adapters that use it like the HTTP and SOAP Inbound Adapters.

8.5.Inbound Adapters

8.5.1.HTTP Inbound Adapter

This adapter provides support for processing HTTP requests.

8.5.1.1.IP Host and Address Banning

Host names and TCP/IP addresses that are to be blocked can be placed in their corresponding blocked files. These entries override the TCP Listener's.

8.5.1.2.Content Filtering

This adapter allows for Content Filters to be added. An existing Virus Content Filter is provided for simple virus checking of some Nimda and Code Red viruses.

8.5.2.SOAP Inbound Adapter

This adapter provides support for processing SOAP requests via HTTP. It extends the HTTP Inbound Adapter (one of the few cases of inheritance you will find in S-integrator).

8.5.2.1.IP Host and Address Banning

Host names and TCP/IP addresses that are to be blocked can be placed in their corresponding blocked files. These entries override the TCP Listener's.

8.5.2.2.Content Filtering

Since this adapter uses the HTTP Inbound Adapter, it also uses the same content filtering mechanism.

8.6.Outbound Adapters

8.6.1.JDBC Outbound Adapter

JDBC drivers are specified in a Service Store Destination with the corresponding JDBC Outbound Adapter. Additionally, there must be a corresponding Remote Service description entry in the Services file within that Service Store.

8.6.2.Mainframe Outbound Adapter

The Mainframe Adapter is written in 'C' and is available only for Windows platforms and requires an APPC gateway such as Microsoft Host Integration Server (HIS), the older Microsoft SNA Server or the IBM equivalents for the Windows platform.

8.7.Protocol Support

8.7.1.SMTP

SMTP is currently supported via the SmtpClient Class.

8.7.2.FTP

FTP is currently supported via the FtpClient Class.

9 Deploying Services

9.1.Initial Deployment

Services are initially deployed by performing the following steps:

9.2.Hot Deployment

Atomic Services can be hot deployed by simply replacing the Java class and/or JAR files in the Service Store. The new class will be used the next time the service is called.





10 System Services

10.1.Authentication, Registration and Session Management

Future

10.1.1.Authentication

Future

10.1.2.Registration

Future

10.1.3.Session Management

Future

10.1.4.Service Package Authorization

Future

10.1.5.Service Authorization

Future

10.1.6.Content Authorization

Future

10.2.Authorization

Future

10.3.Content Management

Future

10.4.Configuration File Management

Future

10.5.Administration

Future

10.5.1.Server Health

Future

10.5.2.Server Management

Future

10.5.3.Scheduling

Future

10.5.4.Service Management

Future

10.5.5.Mail

Future

10.5.6.Web Server

Future

11 Client API

Future

11.1.Interface

Future

11.2.Sample

Future

Copyright 2003 Indigo Technology Partners, Inc.