📄 corbaimageserver.java
字号:
// **********************************************************************// // <copyright>// // BBN Technologies// 10 Moulton Street// Cambridge, MA 02138// (617) 873-8000// // Copyright (C) BBNT Solutions LLC. All rights reserved.// // </copyright>// **********************************************************************// // $Source: /cvs/distapps/openmap/src/corba/com/bbn/openmap/plugin/corbaImage/CorbaImageServer.java,v $// $RCSfile: CorbaImageServer.java,v $// $Revision: 1.3.2.2 $// $Date: 2005/08/11 21:03:20 $// $Author: dietrick $// // **********************************************************************package com.bbn.openmap.plugin.corbaImage;import com.bbn.openmap.image.MapRequestHandler;import com.bbn.openmap.plugin.corbaImage.corbaImageServer.*;import com.bbn.openmap.util.corba.CORBASupport;import com.bbn.openmap.util.Debug;import java.io.*;import java.util.Properties;/** * The CorbaImageServer is a CORBA implementation of a server that * provides images of maps. The request is the same as the meat of the * SimpleHttpImageServer, without the http references. The * CorbaImageServer uses a MapRequestHandler to create the image to * return to the client. The server is configured with an * openmap.properties file with the additional ImageServer properties * for formatters and layers. * <p> * * This client-server has been tested with Visibroker 3.4. * * @see com.bbn.openmap.image.MapRequestHandler * @see com.bbn.openmap.image.SimpleHttpImageServer */public class CorbaImageServer extends ServerPOA { protected static String iorfile = null; protected static String naming = null; public final static String ClassPropertyName = "class"; protected MapRequestHandler map = null; /** * Default Constructor. */ public CorbaImageServer() { this("Default"); } /** * The constructor that you should use. * * @param name the identifying name for persistance. */ public CorbaImageServer(String name) { super(); } /** * Retrieve the subframe data from the frame cache, decompress it, * and convert it to an image. * * @param request a sequence of key/value pairs from the * client, stating preferences. * @return byte[] of image */ public byte[] getImage(String request) { Debug.message("cis", "CorbaImageServer: handling subframe request for client"); if (map == null) { Debug.error("CorbaImageServer not configured for getting data! No data source"); return new byte[0]; } byte[] imageData = new byte[0]; try { imageData = map.handleRequest(request); } catch (IOException ioe) { Debug.error("CorbaImageServer: IOException processing: " + request); } if (imageData == null) { // If something went wrong, lets send something safe. Debug.message("cis", "CorbaImageServer: something went wrong with image creation!"); imageData = new byte[0]; } Debug.message("cis", "CorbaImageServer: returning image of length: " + imageData.length); return imageData; } /** * Start the server. * * @param args command line arguments. */ public void start(String[] args) { CORBASupport cs = new CORBASupport(); if (args != null) { parseArgs(args); } cs.start(this, args, iorfile, naming); } /** */ public void parseArgs(String[] args) { Properties properties = null; for (int i = 0; i < args.length; i++) { if (args[i].equalsIgnoreCase("-ior")) { iorfile = args[++i]; } else if (args[i].equalsIgnoreCase("-name")) { naming = args[++i]; } else if (args[i].equalsIgnoreCase("-help")) { printHelp(); } else if (args[i].equalsIgnoreCase("-verbose")) { Debug.put("cis"); Debug.put("imageserver"); Debug.put("formatter"); } else if (args[i].equalsIgnoreCase("-properties")) { String propLocation = null; propLocation = args[++i]; Debug.message("cis", "CorbaImageServer getting properties from " + propLocation); properties = loadProps(propLocation); } else if (args[i].equalsIgnoreCase("-h")) { printHelp(); } } // if you didn't specify an iorfile if (iorfile == null && naming == null) { Debug.error("CorbaImageServer: IOR file and name service name are null! Use `-ior' or '-name' flag!"); System.exit(-1); } if (properties == null) { Debug.error("CorbaImageServer: No properties file for server specified! Use `-properties' flag and a properties file suitable for MapRequestHandler!"); System.exit(-1); } else { try { map = new MapRequestHandler(properties); Debug.output("CorbaImageServer: CorbaImageServer! Running with properties => " + properties); } catch (IOException ioe) { Debug.error("CorbaImageServer caught IOException while loading properties into the MapRequestHandler."); map = null; } } } /** * Load the named file from the named directory into the given * <code>Properties</code> instance. If the file is not found a * warning is issued. If an IOExceptio occurs, a fatal error is * printed and the application will exit. * * @param file the name of the file * @return the loaded properties */ public Properties loadProps(String file) { java.io.File propsFile = new java.io.File(file); Properties props = new Properties(); try { java.io.InputStream propsStream = new java.io.FileInputStream(propsFile); props.load(propsStream); } catch (java.io.FileNotFoundException e) { System.err.println("CorbaImageServer did not find properties file: \"" + file + "\""); System.exit(1); } catch (java.io.IOException e) { System.err.println("Caught IO Exception reading configuration file \"" + propsFile + "\""); e.printStackTrace(); System.exit(1); } return props; } /** * <b>printHelp </b> should print a usage statement which reflects * the command line needs of your specialist. */ public void printHelp() { Debug.output("usage: java CorbaImageServer [-ior <file> || -name <NAME>] -properties \"<path to properties file>\""); System.exit(1); } public static void main(String[] args) { Debug.init(System.getProperties()); // Create the specialist server CorbaImageServer srv = new CorbaImageServer("CorbaImageServer"); srv.start(args); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -