9 Configuring Network I/O for Oracle Event Processing

This chapter describes how to configure network I/O in Oracle Event Processing, including how to configure either a network I/O server or client.

This chapter includes the following sections:

9.1 Overview of Network I/O in Oracle Event Processing

Oracle Event Processing supports network Input/Output (I/O) over Transmission Control Protocol/Internet Protocol (TCP/IP) using a variety of providers in both server and client mode.

You may define a network I/O service for both Secure Socket Layer (SSL) and non-SSL network access.

Oracle Event Processing supports both IPv4 and IPv6.

The following Oracle Event Processing services depend on network I/O configuration:

  • jetty: depends on network I/O server (netio) configuration.

  • weblogic-rmi-client: depends on network I/O client (netio-client) configuration.

For more information, see:

9.1.1 Network I/O Providers

Table 9-1 lists the network I/O providers that Oracle Event Processing supports.

Table 9-1 Oracle Event Processing Network I/O Providers

provider-type SSL? Description

non-blocking

No

A non-blocking provider provides fully non-blocking I/O for reads and writes. That means that each call to read or write on the Connection interface will return immediately without blocking. If the underlying connection is not ready, then the read or write call will simply return zero. At that point, the calling code must use one of the notification mechanisms in the NetIO API to wait until the connection is ready to read or write. Non-Blocking providers may also support a non-blocking connect call, which means that a thread need not block if it takes a long time to establish (or fail to establish) a connection to a remote server.

semi-blocking

No

A semi-blocking provider provides non-blocking I/O for the read call, but each write call blocks until the data has been handed to the TCP/IP stack. Some platforms provide mechanisms that make it possible to implement a write-blocking provider that is faster than a fully non-blocking provider, but still allows for high scalability.

blocking

No

A blocking provider blocks on each read and write call until it is complete. If there is no data ready to read, then read will block until there is. This type of provider is much less scalable because there must be a thread waiting for each network connection that might have data. Oracle recommends that this type of provider should not typically be used.

native

No

The NativeAsyncEngine will be tried. If it is not supported, then an error will be raised.

NIOFoot 1 

Yes

The NIOEngine will always be used.


Footnote 1 Default provider-type.

Example 9-1 shows how to specify a provider in the Oracle Event Processing server config.xml file netio element using the provider-type child element.

Example 9-1 Oracle Event Processing netio Element With provider-type Defined

<netio>
    <name>myNetio</name>
    <port>12345</port>
    <provider-type>non-blocking</provider-type>
</netio>

9.1.2 IPv4 and IPv6 Support

Oracle Event Processing server is certified for use with IPv4 only or IPv4/IPv6 dual-stack.

Oracle Event Processing does not support IPv6.

For more information about IPv6, see RFC 2460: Internet Protocol, Version 6 (IPv6) Specification (http://www.ietf.org/rfc/rfc2460.txt).

9.2 Configuring Network I/O Server (netio)

You can define a network I/O service that may be used by other services to act as the server and listen for incoming connections.

Alternatively, you can create a client network I/O service as Section 9.3, "Configuring Network I/O Client (netio-client)" describes.

9.2.1 How to Configure Network I/O Server

You configure network I/O server services using the netio element in the Oracle Event Processing server config.xml file.

For more information, see:

To configure network I/O server:

  1. In the Oracle Event Processing server config.xml file, create a netio element as Example 9-2 shows.

    Example 9-2 Oracle Event Processing netio Element

    <netio>
    </netio>
    
  2. Add a name element that uniquely identifies this netio element on this Oracle Event Processing server as Example 9-3 shows.

    Example 9-3 Oracle Event Processing netio Element With name Element

    <netio>
        <name>MyNetIO</name>
    </netio>
    
  3. Add a port element to define the TCP/IP port on which this netio service will listen for connection requests as Example 9-4 shows.

    Example 9-4 Oracle Event Processing netio Element With port Element

    <netio>
        <name>MyNetIO</name>
        <port>9002</port>
    </netio>
    
  4. Optionally, specify a provider-type as Example 9-5 shows.

    Example 9-5 Oracle Event Processing netio Element With port Element

    <netio>
        <name>MyNetIO</name>
        <port>9002</port>
        <provider-type>NIO</provider-type>
    </netio>
    

    For more information, see Section 9.1.1, "Network I/O Providers".

  5. Optionally, specify the other netio child elements.

    For more information, see "netio" in the Oracle Fusion Middleware Developer's Guide for Oracle Event Processing for Eclipse.

9.3 Configuring Network I/O Client (netio-client)

You can define a network I/O service that may be used to perform non-blocking network I/O, but which will not act as a server and will not listen for incoming connections.

Alternatively, you can create a server network I/O service as Section 9.2, "Configuring Network I/O Server (netio)" describes.

9.3.1 How to Configure Network IO Client

You configure network I/O client services using the netio-client element in the Oracle Event Processing server config.xml file.

For more information, see:

To configure network I/O client:

  1. In the Oracle Event Processing server config.xml file, create a netio-client element as Example 9-2 shows.

    Example 9-6 Oracle Event Processing netio-client Element

    <netio-client>
    </netio-client>
    
  2. Add a name element that uniquely identifies this netio element on this Oracle Event Processing server as Example 9-3 shows.

    Example 9-7 Oracle Event Processing netio-client Element With name Element

    <netio-client>
        <name>MyNetIOClient</name>
    </netio-client>
    
  3. Optionally, specify a provider-type as Example 9-5 shows.

    Example 9-8 Oracle Event Processing netio-client Element With port Element

    <netio-client>
        <name>MyNetIOClient</name>
        <provider-type>NIO</provider-type>
    </netio-client>
    

    For more information, see Section 9.1.1, "Network I/O Providers".

  4. Optionally, specify the other netio-client child elements.

    For more information, see "netio-client" in the Oracle Fusion Middleware Developer's Guide for Oracle Event Processing for Eclipse.