This example describes how to set up a client application in Adaptive Server. Adaptive Server version12.5 does not support direct access to a file; this example is a workaround for this limitation.
You can write your own external server, which performs file operations, and connect to this new server from the Adaptive Server, using a socket created from a Socket class.
In the basic roles of client and server, the client connects to the server and streams the text, while the server receives the stream and streams it to a file.
This example shows how you can install a Java application in Adaptive Server, using java.net. This application acts as a client to an external server.
The client process:
Receives an InputStream.
Creates a socket using the Socket class to connect to the server.
Creates an OutputStream on the socket.
Reads the InputStream and writes it to the OutputStream:
import java.io.*; import java.net.*; public class TestStream2File {
public static void writeOut(InputStream fin)throws Exception { Socket socket = new Socket("localhost", 1718); OutputStream fout = newBufferedOutputStream(socket.getOutputStream()); byte[] buffer = new byte[10]; int bytes_read; while ((bytes_read = fin.read(buffer)) != -1) { fout.write(buffer, 0, bytes_read); } fout.close(); } }
Compile this program.
The server process:
Creates a server socket, using the SocketServer class, to listen on a port.
Uses the server socket to obtain a socket connection.
Receives an InputStream.
Reads the InputStream and writes it to a FileOutputStream.
In this example, the server does not use threads, and therefore it can receive a connection from only one client at a time.
import java.io.*; import java.net.*;
public class FileServer {
public static void main (string[] args) throws IOException{ Socket client = accept (1718); try{ InputStream in = client.getInputStream (); FileOutputStream fout = new FileOutputStream("chastity.txt"); byte[] buffer = new byte [10]; int bytes_read; while (bytes_read = in.read(buffer))!= -1){ fout.write(buffer, 0, bytes_read); } fout.close(); } finally { client.close (); } }
static Socket accept (int port) throwsIOException {
System.out.prinln ("Starting on port " + port);
ServerSocket server = new ServerSocket (port);
System.out.println ("Waiting");
Socket client = server.accept ();
System.out.println ("Accepted from " + client.getInetAddress ()); server.close (); return client; } }
Compile this program.
To use this combination of client and server, you must install the client in Adaptive Server and start the external server:
witness% java FileServer &
[2] 28980 witness% Starting on port 1718
Waiting
Invoke the client from within Adaptive Server.
use pubs2 go select TestStream2File.writeOut(c1) from blurbs where au_id = “486-29-1786”
go