This example describes how to set up a client application in Adaptive Server. Adaptive Server version12.5 and later 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
| Copyright © 2005. Sybase Inc. All rights reserved. |
|
|