- Java Server Source:
/var/www/html/linja/LinjaServer.java
/*
// 21 Apr 2002
//
// /usr/bin/javac *.java
// /bin/cp *.class /var/www/html/linja
// cd /var/www/html/linja
// /usr/bin/java LinjaServer
//
*/
import java.lang.*;
import java.net.*;
import LinjaCommon;
public class LinjaServer extends java.lang.Thread
implements java.lang.Runnable
{
public final static int SLEEP_INTERVAL = 1000;
public final static java.lang.String COMMAND_STRING =
new java.lang.String("/opt/linja/bin/linja.bash");
public java.net.ServerSocket serverSocket;
public java.net.Socket socket;
public java.lang.String input;
public Connection connection;
public LinjaServer
(
)
{
try
{
this.serverSocket = new ServerSocket(LinjaCommon.PORT);
}
catch
(
java.lang.Exception exceptionValue
)
{
java.lang.System.err.println(exceptionValue.getMessage());
java.lang.System.exit(0);
}
return;
}
public static void main
(
java.lang.String argv[]
)
{
LinjaServer linjaServer;
linjaServer = new LinjaServer();
linjaServer.start();
return;
}
public synchronized void run
(
)
{
this.listen();
this.connection = new Connection(this.socket);
this.connection.start();
for (;;)
{
try
{
this.toProcess();
this.sleep(this.SLEEP_INTERVAL);
}
catch
(
java.lang.Exception exceptionValue
)
{
break;
}
}
this.close();
return;
}
public void listen
(
)
{
try
{
this.socket = this.serverSocket.accept();
}
catch
(
java.lang.Exception exceptionValue
)
{
java.lang.System.err.println(exceptionValue);
}
return;
}
public void close
(
)
{
try
{
this.socket.close();
}
catch
(
java.lang.Exception exceptionValue
)
{
java.lang.System.err.println(exceptionValue.getMessage());
return;
}
return;
}
public void toProcess
(
)
{
java.lang.Runtime runtime;
java.io.BufferedReader bufferedReader;
java.lang.String string;
java.lang.String line;
runtime = java.lang.Runtime.getRuntime();
try
{
bufferedReader =
new java.io.BufferedReader
(
new java.io.InputStreamReader
(
runtime.exec(this.COMMAND_STRING).getInputStream()
)
);
string = new java.lang.String("\n");
while ((line = bufferedReader.readLine()) != null)
{
string = new java.lang.String(string + line + "\n");
}
this.connection.dataOutputStream.writeUTF(string);
}
catch
(
java.lang.Exception exceptionValue
)
{
java.lang.System.err.println(exceptionValue.getMessage());
return;
}
return;
}
}
class Connection extends java.lang.Thread
{
public java.net.Socket socket;
public java.io.DataOutputStream dataOutputStream;
public Connection
(
java.net.Socket socketValue
)
{
this.socket = socketValue;
return;
}
public synchronized void run
(
)
{
try
{
this.dataOutputStream =
new java.io.DataOutputStream
(
this.socket.getOutputStream()
);
}
catch
(
java.lang.Exception exceptionValue
)
{
java.lang.System.err.println(exceptionValue.getMessage());
java.lang.System.exit(0);
}
return;
}
}
/var/www/html/linja/LinjaCommon.java
/*
// 15 April 2002
*/
import java.lang.*;
public class LinjaCommon
{
public static final java.lang.String HOST =
new java.lang.String("localhost.localdomain");
public static final int PORT = 12345;
public LinjaCommon
(
)
{
super();
return;
}
}
To compile the source code, execute "/usr/bin/javac *.java" and
then make sure the class files are in "/var/www/html/linja".
- Runtime Bash Script:
/opt/linja/bin/linja.bash
#!/bin/bash
SOURCES=`/opt/linja/bin/printsources.bash`;
DATE=`/bin/date`;
for SOURCE in ${SOURCES}
do
/bin/echo "###################################################";
/bin/echo ${DATE};
/bin/echo ${SOURCE};
/bin/cat ${SOURCE};
/bin/echo "###################################################";
done;
/opt/linja/bin/printsources.bash
#!/bin/bash
SOURCE_INIT="/etc/rc.d/init.d/linjad";
SOURCE_C="/opt/linja/src/linjad.c";
SOURCE_BASH="/opt/linja/bin/linja.bash";
SOURCE_JAVA="/opt/linja/src/LinjaServer.java";
SOURCE_APPLET="/opt/linja/src/LinjaClient.java";
/bin/echo "\
${SOURCE_INIT} \
${SOURCE_C} \
${SOURCE_BASH} \
${SOURCE_JAVA} \
${SOURCE_APPLET} \
";
exit 0;
- Java Client Source:
/var/www/html/linja/index.html
<!-- /var/www/html/linja/index.html -->
<applet code="LinjaClient.class" height="400" width="600"></applet>
/var/www/html/linja/LinjaClient.java
/*
// 14 April 2002
//
// /usr/bin/appletviewer index.html
//
*/
import java.lang.*;
import java.applet.*;
import java.awt.*;
import java.net.*;
import java.io.*;
import java.util.*;
public class LinjaClient extends java.applet.Applet
{
public LinjaCommon linjaCommon;
public java.awt.GridBagLayout gridBagLayout;
public java.awt.TextArea textArea;
public java.net.Socket socket;
public LinjaClient
(
)
{
this.linjaCommon = new LinjaCommon();
this.gridBagLayout = new java.awt.GridBagLayout();
this.textArea = new java.awt.TextArea();
return;
}
public void init
(
)
{
super.init();
if (this.connect() != true)
{
java.lang.System.exit(0);
}
this.setLayout(this.gridBagLayout);
this.addComponent(this.textArea, 1, 1, 1, 1,
0, 0, java.awt.GridBagConstraints.NONE);
return;
}
public synchronized void start
(
)
{
java.io.DataInputStream dataInputStream;
Reporter reporter;
try
{
dataInputStream =
new java.io.DataInputStream
(
this.socket.getInputStream()
);
reporter = new Reporter(dataInputStream, this.textArea);
reporter.start();
}
catch
(
java.lang.Exception exceptionValue
)
{
java.lang.System.err.println(exceptionValue.getMessage());
java.lang.System.exit(0);
}
return;
}
public void addComponent
(
java.awt.Component c,
int row,
int column,
int width,
int height,
int weightxValue, // can grow wider
int weightyValue, // can grow taller
int fillValue
)
{
java.awt.GridBagConstraints gbConstraints =
new java.awt.GridBagConstraints();
gbConstraints.gridx = column;
gbConstraints.gridy = row;
gbConstraints.gridwidth = width;
gbConstraints.gridheight = height;
gbConstraints.weightx = weightxValue;
gbConstraints.weighty = weightyValue;
gbConstraints.fill = fillValue;
this.gridBagLayout.setConstraints(c, gbConstraints);
this.add(c);
return;
}
public boolean connect
(
)
{
boolean flag;
flag = true;
try
{
this.socket =
new java.net.Socket
(
linjaCommon.HOST,
linjaCommon.PORT
);
}
catch
(
java.lang.Exception exceptionValue
)
{
flag = false;
}
return flag;
}
}
class Reporter extends java.lang.Thread
{
java.io.DataInputStream dataInputStream;
java.awt.TextArea textArea;
public Reporter
(
java.io.DataInputStream dataInputStreamValue,
java.awt.TextArea textAreaValue
)
{
super();
this.dataInputStream = dataInputStreamValue;
this.textArea = textAreaValue;
return;
}
public synchronized void run
(
)
{
for (;;)
{
try
{
this.textArea.setText
(
this.dataInputStream.readUTF()
);
this.sleep(1000);
}
catch
(
java.lang.Exception exceptionValue
)
{
break;
}
}
return;
}
}
- Man Page:
/usr/share/man/man1/linja.1.gz
.TH LINJA 1
.SH NAME
linja \- LINUX JAVA
.SH SYNOPSIS
/sbin/service linjad start
.br
/usr/bin/java LinjaServer
.br
/usr/bin/appletviewer index.html
.br
.br
.SH DESCRIPTION
Linux Java demonstrates how Java can be used under the
Red Hat Linux 7.1 with the kaffe package.
.PP
This manual page documents the GNU version of
.BR linja .
.B linja
Enables system to function with Bash, C daemon and Java.
.SS OPTIONS
.TP
.I none
.SH VERSION
LINJA v1.0
.SH AUTHOR
Primac Systems Limited - Copyright (c) 2002
.SH BUG REPORT
Report any bugs to [email protected]
.SH WEB
http://www.geocities.com/primacprim/
- Building RPM:
/usr/src/redhat/SPECS/linja.spec
Summary: Linux Java
Name: linja
Version: 1.0
Release: 1
BuildRoot: /var/tmp/%{name}-%{version}
URL: http://www.geocities.com/primacprim/
Packager: Primac <[email protected]>
Distribution: Red Hat Linux release 7.1 (Seawolf)
Vendor: Primac Project <http://www.geocities.com/primacprim/>
License: GPL
Group: Networking/Daemons
Requires: bash >= 2.04-21, fileutils >= 4.0.36-4, initscripts >= 5.83-1, kaffe >= 1.0.6-3, apache >= 1.3.19-5
%description
Linux Java demonstrates how Java can be used under the
Red Hat Linux 7.1 with the kaffe package.
%install
/bin/mkdir -p ${RPM_BUILD_ROOT}/opt/linja/bin
/bin/mkdir -p ${RPM_BUILD_ROOT}/opt/linja/src
/bin/mkdir -p ${RPM_BUILD_ROOT}/etc/rc.d/init.d
/bin/mkdir -p ${RPM_BUILD_ROOT}/var/www/html/linja
/bin/mkdir -p ${RPM_BUILD_ROOT}/usr/share/man/man1
/usr/bin/install -m755 ${RPM_SOURCE_DIR}/linjad.init ${RPM_BUILD_ROOT}/etc/rc.d/init.d/linjad
/usr/bin/install -m755 ${RPM_SOURCE_DIR}/linja.1.gz ${RPM_BUILD_ROOT}/usr/share/man/man1
/usr/bin/install -m755 ${RPM_SOURCE_DIR}/linjad ${RPM_BUILD_ROOT}/opt/linja/bin
/usr/bin/install -m755 ${RPM_SOURCE_DIR}/*.bash ${RPM_BUILD_ROOT}/opt/linja/bin
/usr/bin/install -m755 ${RPM_SOURCE_DIR}/*.java ${RPM_BUILD_ROOT}/opt/linja/src
/usr/bin/install -m755 ${RPM_SOURCE_DIR}/*.c ${RPM_BUILD_ROOT}/opt/linja/src
/usr/bin/install -m755 ${RPM_SOURCE_DIR}/*.class ${RPM_BUILD_ROOT}/opt/linja/bin
/usr/bin/install -m755 ${RPM_SOURCE_DIR}/*.class ${RPM_BUILD_ROOT}/var/www/html/linja
/usr/bin/install -m755 ${RPM_SOURCE_DIR}/index.html ${RPM_BUILD_ROOT}/var/www/html/linja
%post
/bin/echo -e "\nLinux Java\n";
%clean
/bin/rm -rf ${RPM_BUILD_ROOT}
%files
/etc/rc.d/init.d/linjad
/usr/share/man/man1/linja.1.gz
/var/www/html/linja/Connection.class
/var/www/html/linja/LinjaClient.class
/var/www/html/linja/LinjaServer.class
/var/www/html/linja/LinjaCommon.class
/var/www/html/linja/Reporter.class
/var/www/html/linja/index.html
/opt/linja/bin/linjad.bash
/opt/linja/bin/linjad
/opt/linja/bin/LinjaClient.class
/opt/linja/bin/LinjaCommon.class
/opt/linja/bin/LinjaServer.class
/opt/linja/bin/Connection.class
/opt/linja/bin/Reporter.class
/opt/linja/bin/printsources.bash
/opt/linja/bin/linja.bash
/opt/linja/src/linjad.c
/opt/linja/src/LinjaCommon.java
/opt/linja/src/LinjaServer.java
/opt/linja/src/LinjaClient.java
%changelog
* Sat May 3 2002 Primac <[email protected]>
- First Build (/bin/rpm -bb linja.spec)
Make sure that all of the files are in the /usr/src/redhat/SOURCES.
Execute "/bin/rpm -bb /usr/src/redhat/SPECS/linja.spec".
Install the new Linja RPM "/bin/rpm -ivh /usr/src/redhat/RPMS/i386/linja-1.0-1.i386.rpm".