9 Configuring Network I/O for Oracle CEP

This chapter contains information on the following topics:

9.1 Overview of Network I/O in Oracle CEP

Oracle CEP 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 CEP supports both IPv4 and IPv6.

The following Oracle CEP 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 CEP supports.

Table 9-1 Oracle CEP 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.

Provider class: com.bea.core.netio.provider.noblock.NIOEngine.

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.

Provider class:

  • Linux with JRockit: com.bea.core.netio.provider.jrockit.JRockitEngine

  • Windows: com.bea.core.netio.provider.nativeasync.NativeAsyncEngine

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.

Provider class: com.bea.core.netio.provider.block.BlockingEngine.

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 CEP server config.xml file netio element using the provider-type child element.

Example 9-1 Oracle CEP 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 CEP server is certified for use with IPv4 only or IPv4/IPv6 dual-stack.

Oracle CEP 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 CEP server config.xml file.

For more information, see:

To configure network I/O server:

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

    Example 9-2 Oracle CEP netio Element

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

    Example 9-3 Oracle CEP 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 CEP 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 CEP 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 Complex Event Processing Developer's Guide 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 CEP server config.xml file.

For more information, see:

To configure network I/O client:

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

    Example 9-6 Oracle CEP netio-client Element

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

    Example 9-7 Oracle CEP 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 CEP 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 Complex Event Processing Developer's Guide for Eclipse.