FileInterface.idl
**************
module FileInter
{
interface FileInterface
{
typedef sequence
data downloadFile(in string filename);
};
};
FileServant.java
**************
import java.io.*;
import FileInter.*;
public class FileServant extends _FileInterfaceImplBase
{
public byte[] downloadFile(String filename)
{
File file=new File(filename);
byte buffer[]=new byte[(int)file.length()];
try{
BufferedInputStream input=new BufferedInputStream(new FileInputStream(filename));
input.read(buffer,0,buffer.length);
}
catch(Exception e)
{
System.out.println("File Servant Error:"+e.getMessage());
e.printStackTrace();
}
return(buffer);
}
}
FileServer.java
**************
import java.lang.*;
import FileInter.*;
import java.io.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
public class FileServer
{
public static void main(String args[])
{
try
{
ORB orb=ORB.init(args,null);
FileServant fileRef=new FileServant();
orb.connect(fileRef);
org.omg.CORBA.Object objRef=orb.resolve_initial_references("NameService");
NamingContext ncRef=NamingContextHelper.narrow(objRef);
NameComponent nc=new NameComponent("FileTransfer","");
NameComponent path[]={nc};
ncRef.rebind(path,fileRef);
System.out.println("Server Started");
java.lang.Object sync=new java.lang.Object();
synchronized(sync)
{
sync.wait();
}
}
catch(Exception e)
{
System.out.println("File Server Error:"+e.getMessage());
e.printStackTrace();
}}}
FileClient.java
*************
import java.util.*;
import FileInter.*;
import java.io.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
public class FileClient
{
public static void main(String args[])
{
try
{
ORB orb=ORB.init(args,null);
org.omg.CORBA.Object objRef=orb.resolve_initial_references("NameService");
NamingContext ncRef=NamingContextHelper.narrow(objRef);
NameComponent nc=new NameComponent("FileTransfer","");
NameComponent path[]={nc};
FileInterface fileRef=FileInterfaceHelper.narrow(ncRef.resolve(path));
if(args.length<1)
System.out.println("Usage :java FileClient filename");
File file=new File(args[0]);
byte data[]=fileRef.downloadFile(args[0]);
BufferedOutputStream output=new BufferedOutputStream(new FileOutputStream(args[1]));
output.write(data,0,data.length);
output.flush();
output.close();
}
catch(Exception e)
{
System.out.println("File Client Error:"+e.getMessage());
e.printStackTrace();
}}}
OUTPUT
********
D:\java_pgm>path=%path%;c:\jdk1.3\bin
D:\java_pgm>idltojava -fno-cpp FileInterface.idl
D:\java_pgm>cd FileInter(name of the module)
D:\java_pgm\FileInter>cd FileInterfacePackage(name of the folder inside the folder FileInter)
D:\java_pgm\FileInter\FileInterfacePackage>javac *.java (after this copy the contents of FileInterfacePackage folder and paste it in FileInter folder)
D:\java_pgm\FileInter\FileInterfacePackage>cd..
D:\java_pgm\FileInter>javac *.java
Note: _FileInterfaceImplBase.java uses or overrides a deprecated API.
Note: Recompile with -deprecation for details.
D:\java_pgm\FileInter>javac -d _FileInterfaceImplBase.java
D:\java_pgm\FileInter>cd..
D:\java_pgm>javac FileServant.java
D:\java_pgm>javac FileServer.java
D:\java_pgm>javac FileClient.java
D:\java_pgm>tnameserv
Initial Naming Context:
IOR:000000000000002849444c3a6f6d672e6f72672f436f734e616d696e672f4e616d696e67436f6e746578743a312e3000000000010000000000000050000101000000000a31323
72e302e302e31000bd300000018afabcafe00000002b63b29040000000800000000000000000000000100000001000000140000000000010020000000000001010000000000
TransientNameServer: setting port for initial object references to: 900
Ready.
***********************************************************************
D:\>path=%path%;d:\jdk1.3\bin
D:\>cd java_pgm
D:\java_pgm>java FileServer
Server Started
***********************************************************************
D:\java_pgm>path=%path%;d:\jdk1.3\bin
D:\java_pgm>java FileClient D:\java_pgm\ip.txt D:\java_pgm\op.txt
D:\java_pgm>java FileClient D:\java_pgm\ip.txt D:\java_pgm\op.txt