Skip to content
Snippets Groups Projects
Commit aa610f20 authored by Arthur Coolen's avatar Arthur Coolen
Browse files

BugID:604

Added RMI interface (java part)
parent e1014090
No related branches found
No related tags found
No related merge requests found
......@@ -15,19 +15,16 @@ import java.util.Vector;
* @author coolen
*/
public class jParmFacade {
private String itsParmFacadeDB="";
/** Creates a new instance of jParmFacade */
public jParmFacade(String tableName) {
try {
initParmFacade(tableName);
} catch (Exception ex) {
System.out.println("Error during init: ");
ex.printStackTrace();
}
public jParmFacade() {
itsParmFacadeDB="";
}
public void setParmFacadeDB(String tableName) {
itsParmFacadeDB=tableName;
}
// Make a connection to the given ParmTable.
private native void initParmFacade (String tableName) throws Exception;
// Get the domain range (as startx,endx,starty,endy) of the given
// parameters in the table.
......
//# jParmFacadeAdapter.java: The RMI adapter of the OTDB database.
//#
//# Copyright (C) 2002-2007
//# ASTRON (Netherlands Foundation for Research in Astronomy)
//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, seg@astron.nl
//#
//# This program is free software; you can redistribute it and/or modify
//# it under the terms of the GNU General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or
//# (at your option) any later version.
//#
//# This program is distributed in the hope that it will be useful,
//# but WITHOUT ANY WARRANTY; without even the implied warranty of
//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//# GNU General Public License for more details.
//#
//# You should have received a copy of the GNU General Public License
//# along with this program; if not, write to the Free Software
//# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//#
package nl.astron.lofar.java.cep.jparmfacade;
import java.util.Vector;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.RemoteException;
import java.util.HashMap;
public class jParmFacadeAdapter extends UnicastRemoteObject implements jParmFacadeInterface
{
// Constructor
public jParmFacadeAdapter (jParmFacade adaptee) throws RemoteException
{
this.adaptee = adaptee;
}
public void setParmFacadeDB(String tableName) throws RemoteException {
adaptee.setParmFacadeDB(tableName);
}
// Get the domain range (as startx,endx,starty,endy) of the given
// parameters in the table.
// This is the minimum start value and maximum end value for all parameters.
// An empty name pattern is the same as * (all parm names).
public Vector<Double> getRange(String parmNamePattern) throws RemoteException {
Vector<Double> aV=null;
try {
aV=adaptee.getRange(parmNamePattern);
} catch (Exception ex) {
RemoteException anEx=new RemoteException("JNI getRange error");
anEx.initCause(ex);
throw anEx;
}
return aV;
}
// Get parameter names in the table matching the pattern.
// An empty name pattern is the same as * (all parm names).
public Vector<String> getNames(String parmNamePattern) throws RemoteException {
Vector<String> aV=null;
try {
aV= adaptee.getNames(parmNamePattern);
} catch (Exception ex) {
RemoteException anEx=new RemoteException("JNI getNames error");
anEx.initCause(ex);
throw anEx;
}
return aV;
}
// Get the parameter values for the given parameters and domain.
// The domain is given by the start and end values, while the grid is
// given by nx and ny.
public HashMap<String,Vector<Double>> getValues(String parmNamePattern,
double startx, double endx, int nx,
double starty, double endy, int ny) throws RemoteException {
HashMap<String,Vector<Double>> aM=null;
try {
aM=adaptee.getValues(parmNamePattern,startx,endx,nx,starty,endy,ny);
} catch (Exception ex) {
RemoteException anEx=new RemoteException("JNI getValues error");
anEx.initCause(ex);
throw anEx;
}
return aM;
}
protected jParmFacade adaptee;
}
//# jParmFacadeInterface.java: The RMI interface to the Parameter database.
//#
//# Copyright (C) 2002-2007
//# ASTRON (Netherlands Foundation for Research in Astronomy)
//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, seg@astron.nl
//#
//# This program is free software; you can redistribute it and/or modify
//# it under the terms of the GNU General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or
//# (at your option) any later version.
//#
//# This program is distributed in the hope that it will be useful,
//# but WITHOUT ANY WARRANTY; without even the implied warranty of
//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//# GNU General Public License for more details.
//#
//# You should have received a copy of the GNU General Public License
//# along with this program; if not, write to the Free Software
//# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//#
package nl.astron.lofar.java.cep.jparmfacade;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.HashMap;
import java.util.Vector;
public interface jParmFacadeInterface extends Remote
{
// Constants
public static final String SERVICENAME = "jParmFacade";
public void setParmFacadeDB(String tableName) throws RemoteException;
// Get the domain range (as startx,endx,starty,endy) of the given
// parameters in the table.
// This is the minimum start value and maximum end value for all parameters.
// An empty name pattern is the same as * (all parm names).
public Vector<Double> getRange(String parmNamePattern) throws RemoteException;
// Get parameter names in the table matching the pattern.
// An empty name pattern is the same as * (all parm names).
public Vector<String> getNames(String parmNamePattern) throws RemoteException;
// Get the parameter values for the given parameters and domain.
// The domain is given by the start and end values, while the grid is
// given by nx and ny.
public HashMap<String,Vector<Double>> getValues(String parmNamePattern,
double startx, double endx, int nx,
double starty, double endy, int ny) throws RemoteException;
}
//# jParmFacadeServer.java: The RMI server of the OTDB database.
//#
//# Copyright (C) 2002-2007
//# ASTRON (Netherlands Foundation for Research in Astronomy)
//# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, seg@astron.nl
//#
//# This program is free software; you can redistribute it and/or modify
//# it under the terms of the GNU General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or
//# (at your option) any later version.
//#
//# This program is distributed in the hope that it will be useful,
//# but WITHOUT ANY WARRANTY; without even the implied warranty of
//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//# GNU General Public License for more details.
//#
//# You should have received a copy of the GNU General Public License
//# along with this program; if not, write to the Free Software
//# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//#
package nl.astron.lofar.java.cep.jparmfacade;
import java.rmi.registry.*;
import java.rmi.server.RMISocketFactory;
import nl.astron.lofar.sas.otb.jotdb2.jInitCPPLogger;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class jParmFacadeServer {
private static jParmFacade jParmFacadeAdaptee;
private static jParmFacadeAdapter jParmFacadeAdapter;
static
{
System.loadLibrary("jparmfacade");
}
static Logger logger = Logger.getLogger(jParmFacadeServer.class);
public static void main(String[] args) {
try {
String logConfig = "jParmFacade.log_prop";
PropertyConfigurator.configure(logConfig);
jInitCPPLogger aCPPLogger=new jInitCPPLogger(logConfig);
logger.info("jOTDBServer started. LogPropFile: "+ logConfig);
// if (System.getSecurityManager () == null)
// {
// System.out.println ("No security mananger is running, will start one now...");
// System.setSecurityManager (new RMISecurityManager ());
// }
if (args.length < 4) {
System.out.println("Usage: java -jar jParmFacadeServer.jar <hostname> <rmiportnumber-OPTIONAL> <rmi objects portnumber for firewall/tunneling purposes-OPTIONAL>");
System.exit(0);
}
String aHostName = new String(args[0]);
logger.info("Running on: "+aHostName);
System.setProperty("java.rmi.server.hostname", aHostName);
Registry localRegistry = null;
int objectPort = 0;
if (args.length == 1){
logger.info("jParmFacadeServer creating a local RMI registry on port "+Registry.REGISTRY_PORT+" ...");
localRegistry = LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
}else if (args.length > 1) {
Integer rmiPort = new Integer(args[4]);
logger.info("jParmFacadeServer creating a local RMI registry on port "+rmiPort+" ...");
localRegistry = LocateRegistry.createRegistry(rmiPort.intValue());
if (args.length ==3){
Integer rmiObjectsPort = new Integer(args[5]);
logger.info("jParmFacadeServer setting up RMI server objects on port "+rmiObjectsPort+" ...");
RMISocketFactory socketFactory = RMISocketFactory.getDefaultSocketFactory();
socketFactory.createServerSocket(rmiObjectsPort);
objectPort = rmiObjectsPort;
}
}
logger.info("jParmFacadeServer creating local object and remote adapter...");
// Export jParmFacade
jParmFacadeAdaptee = new jParmFacade();
jParmFacadeAdapter = new jParmFacadeAdapter(jParmFacadeAdaptee);
//A custom port was specified, export the object using the port specified
if(objectPort!=0){
jParmFacadeAdapter.unexportObject(jParmFacadeAdapter,true);
jParmFacadeAdapter.exportObject(jParmFacadeAdapter,objectPort);
}
logger.info("jParmFacadeServer publishing service " + jParmFacadeInterface.SERVICENAME + " in local registry...");
localRegistry.rebind(jParmFacadeInterface.SERVICENAME, jParmFacadeAdapter);
logger.info("Published jParmFacadeInterface as service " + jParmFacadeInterface.SERVICENAME + ". Ready...");
String statusmessage = "jParmFacadeserver is ready for incoming calls";
if (args.length > 1) {
Integer rmiPort = new Integer(args[1]);
statusmessage += " on rmi registry port "+rmiPort;
if (args.length ==3){
Integer rmiObjectsPort = new Integer(args[2]);
statusmessage += " and rmi server object port "+rmiObjectsPort +". Please tunnel/forward both ports for your client to work";
}
}
statusmessage+="...";
logger.info(statusmessage);
}
catch (Exception e) {
logger.fatal("jParmFacadeServer failed: " + e);
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment