📄 cconnection.java
字号:
/******************************************************************************
* The contents of this file are subject to the Compiere License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the License at http://www.compiere.org/license.html
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Original Code is Compiere ERP & CRM Smart Business Solution. The Initial
* Developer of the Original Code is Jorg Janke. Portions created by Jorg Janke
* are Copyright (C) 1999-2005 Jorg Janke.
* All parts are Copyright (C) 1999-2005 ComPiere, Inc. All Rights Reserved.
* Contributor(s): ______________________________________.
*****************************************************************************/
package org.compiere.db;
import java.io.*;
import java.sql.*;
import java.util.*;
import java.util.logging.*;
import javax.naming.*;
import javax.sql.*;
import org.compiere.*;
import org.compiere.interfaces.*;
import org.compiere.util.*;
/**
* Compiere Connection Descriptor
*
* @author Jorg Janke
* @author Marek Mosiewicz<marek.mosiewicz@jotel.com.pl> - support for RMI over HTTP
* @version $Id: CConnection.java,v 1.73 2006/01/03 02:40:37 jjanke Exp $
*/
public class CConnection implements Serializable
{
/** Connection */
private static CConnection s_cc = null;
/** Logger */
private static CLogger log = CLogger.getCLogger (CConnection.class);
/** Connection profiles */
public static ValueNamePair[] CONNECTIONProfiles = new ValueNamePair[]{
new ValueNamePair("L", "LAN"),
new ValueNamePair("T", "Terminal Services / Citrix"),
new ValueNamePair("V", "VPN"),
new ValueNamePair("W", "WAN") };
/** Connection Profile LAN */
public static final String PROFILE_LAN = "L";
/** Connection Profile Terminal Server */
public static final String PROFILE_TERMINAL = "T";
/** Connection Profile VPM */
public static final String PROFILE_VPN = "V";
/** Connection Profile WAN */
public static final String PROFILE_WAN = "W";
/**
* Get/Set default client/server Connection
* @return Connection Descriptor
*/
public static CConnection get ()
{
return get(null);
} // get
/**
* Get/Set default client/server Connection
* @param apps_host optional apps host for new connections
* @return Connection Descriptor
*/
public static CConnection get (String apps_host)
{
if (s_cc == null)
{
String attributes = Ini.getProperty (Ini.P_CONNECTION);
if (attributes == null || attributes.length () == 0)
{
CConnectionDialog ccd = new CConnectionDialog (new CConnection(apps_host));
s_cc = ccd.getConnection ();
// set also in ALogin and Ctrl
Ini.setProperty (Ini.P_CONNECTION, s_cc.toStringLong ());
Ini.saveProperties (Ini.isClient ());
}
else
{
s_cc = new CConnection (null);
s_cc.setAttributes (attributes);
}
log.fine(s_cc.toString());
}
return s_cc;
} // get
/**
* Get specific connection
* @param type database Type, e.g. Database.DB_ORACLE
* @param db_host db host
* @param db_port db port
* @param db_name db name
* @return connection
*/
public static CConnection get (String type, String db_host, int db_port, String db_name)
{
return get (type, db_host, db_port, db_name, null, null);
} // get
/**
* Get specific client connection
* @param type database Type, e.g. Database.DB_ORACLE
* @param db_host db host
* @param db_port db port
* @param db_name db name
* @param db_uid db user id
* @param db_pwd db user password
* @return connection
*/
public static CConnection get (String type, String db_host, int db_port,
String db_name, String db_uid, String db_pwd)
{
CConnection cc = new CConnection (db_host);
cc.setAppsHost (db_host); // set Apps=DB
cc.setType (type);
cc.setDbHost (db_host);
cc.setDbPort (db_port);
cc.setDbName (db_name);
//
if (db_uid != null)
cc.setDbUid (db_uid);
if (db_pwd != null)
cc.setDbPwd (db_pwd);
return cc;
} // get
/**************************************************************************
* Compiere Connection
* @param host optional application/db host
*/
private CConnection (String host)
{
if (host != null)
{
m_apps_host = host;
m_db_host = host;
}
} // CConnection
/** Name of Connection */
private String m_name = "Standard";
/** Application Host */
private String m_apps_host = "MyAppsServer";
/** Application Port */
private int m_apps_port = 1099;
/** Database Type */
private String m_type = "";
/** Database Host */
private String m_db_host = "MyDBServer";
/** Database Port */
private int m_db_port = 0;
/** Database name */
private String m_db_name = "MyDBName";
/** Connection Profile */
private String m_connectionProfile = null;
/** In Memory connection */
private boolean m_bequeath = false;
/** Connection uses Firewall */
private boolean m_firewall = false;
/** Firewall host */
private String m_fw_host = "";
/** Firewall port */
private int m_fw_port = 0;
/** DB User name */
private String m_db_uid = "compiere";
/** DB User password */
private String m_db_pwd = "compiere";
/** Database */
private CompiereDatabase m_db = null;
/** ConnectionException */
private Exception m_dbException = null;
private Exception m_appsException = null;
/** Database Connection */
private boolean m_okDB = false;
/** Apps Server Connection */
private boolean m_okApps = false;
/** Info */
private String[] m_info = new String[2];
/** Server Version */
private String m_version = null;
/** DataSource */
private DataSource m_ds = null;
/** Server Session */
private Server m_server = null;
/** DB Info */
private String m_dbInfo = null;
/*************************************************************************
* Get Name
* @return connection name
*/
public String getName ()
{
return m_name;
}
/**
* Set Name
* @param name connection name
*/
public void setName (String name)
{
m_name = name;
} // setName
/**
* Set Name
*/
protected void setName ()
{
m_name = toString ();
} // setName
/*************
* Get Application Host
* @return apps host
*/
public String getAppsHost ()
{
return m_apps_host;
}
/**
* Set Application Host
* @param apps_host apps host
*/
public void setAppsHost (String apps_host)
{
m_apps_host = apps_host;
m_name = toString ();
m_okApps = false;
}
/**
* Get Apps Port
* @return port
*/
public int getAppsPort ()
{
return m_apps_port;
}
/**
* Set Apps Port
* @param apps_port apps port
*/
public void setAppsPort (int apps_port)
{
m_apps_port = apps_port;
m_okApps = false;
}
/**
* Set Apps Port
* @param apps_portString appd port as String
*/
public void setAppsPort (String apps_portString)
{
try
{
if (apps_portString == null || apps_portString.length() == 0)
;
else
setAppsPort (Integer.parseInt (apps_portString));
}
catch (Exception e)
{
log.severe(e.toString ());
}
} // setAppsPort
/**
* Is Application Server OK
* @param tryContactAgain try to contact again
* @return true if Apps Server exists
*/
public boolean isAppsServerOK (boolean tryContactAgain)
{
if (!tryContactAgain)
return m_okApps;
// Get Context
if (m_iContext == null)
{
getInitialContext (false);
if (!m_okApps)
return false;
}
// Contact it
try
{
StatusHome statusHome = (StatusHome)m_iContext.lookup (StatusHome.JNDI_NAME);
Status status = statusHome.create ();
m_version = status.getDateVersion ();
status.remove ();
m_okApps = true;
}
catch (Exception ce)
{
m_okApps = false;
}
catch (Throwable t)
{
m_okApps = false;
}
return m_okApps;
} // isAppsOK
/**
* Test ApplicationServer
* @return Exception or null
*/
public Exception testAppsServer ()
{
if (queryAppsServerInfo ())
testDatabase (false);
return getAppsServerException ();
} // testAppsServer
/**
* Get Server
* @return Server
*/
public Server getServer()
{
if (m_server == null)
{
try
{
InitialContext ic = getInitialContext (true);
if (ic != null)
{
ServerHome serverHome = (ServerHome)ic.lookup (ServerHome.JNDI_NAME);
if (serverHome != null)
m_server = serverHome.create();
}
}
catch (Exception ex)
{
log.log(Level.SEVERE, "", ex);
m_iContext = null;
}
}
return m_server;
} // getServer
/**
* Get Apps Server Version
* @return db host name
*/
public String getServerVersion ()
{
return m_version;
} // getServerVersion
/*************
* Get Database Host name
* @return db host name
*/
public String getDbHost ()
{
return m_db_host;
} // getDbHost
/**
* Set Database host name
* @param db_host db host
*/
public void setDbHost (String db_host)
{
m_db_host = db_host;
m_name = toString ();
m_okDB = false;
} // setDbHost
/**
* Get Database Name (Service Name)
* @return db name
*/
public String getDbName ()
{
return m_db_name;
} // getDbName
/**
* Set Database Name (Service Name)
* @param db_name db name
*/
public void setDbName (String db_name)
{
m_db_name = db_name;
m_name = toString ();
m_okDB = false;
} // setDbName
/**
* Get DB Port
* @return port
*/
public int getDbPort ()
{
return m_db_port;
} // getDbPort
/**
* Set DB Port
* @param db_port db port
*/
public void setDbPort (int db_port)
{
m_db_port = db_port;
m_okDB = false;
} // setDbPort
/**
* Set DB Port
* @param db_portString db port as String
*/
public void setDbPort (String db_portString)
{
try
{
if (db_portString == null || db_portString.length() == 0)
;
else
setDbPort (Integer.parseInt (db_portString));
}
catch (Exception e)
{
log.severe(e.toString ());
}
} // setDbPort
/**
* Get Database Password
* @return db password
*/
public String getDbPwd ()
{
return m_db_pwd;
} // getDbPwd
/**
* Set DB password
* @param db_pwd db user password
*/
public void setDbPwd (String db_pwd)
{
m_db_pwd = db_pwd;
m_okDB = false;
} // setDbPwd
/**
* Get Database User
* @return db user
*/
public String getDbUid ()
{
return m_db_uid;
} // getDbUid
/**
* Set Database User
* @param db_uid db user id
*/
public void setDbUid (String db_uid)
{
m_db_uid = db_uid;
m_name = toString ();
m_okDB = false;
} // setDbUid
/**
* RMI over HTTP
* @return true if RMI over HTTP (Wan Connection Profile)
*/
public boolean isRMIoverHTTP ()
{
return Ini.isClient()
&& getConnectionProfile().equals(PROFILE_WAN);
} // isRMIoverHTTP
/**
* Set Connection Profile
* @param connectionProfile connection profile
*/
public void setConnectionProfile (ValueNamePair connectionProfile)
{
if (connectionProfile != null)
setConnectionProfile(connectionProfile.getValue());
} // setConnectionProfile
/**
* Set Connection Profile
* @param connectionProfile connection profile
*/
public void setConnectionProfile (String connectionProfile)
{
if (connectionProfile == null
|| (m_connectionProfile != null
&& m_connectionProfile.equals(connectionProfile))) // same
return;
if (PROFILE_LAN.equals(connectionProfile)
|| PROFILE_TERMINAL.equals(connectionProfile)
|| PROFILE_VPN.equals(connectionProfile)
|| PROFILE_WAN.equals(connectionProfile))
{
if (m_connectionProfile != null)
{
log.config(m_connectionProfile + " -> " + connectionProfile);
m_connectionProfile = connectionProfile;
Ini.setProperty(Ini.P_CONNECTION, toStringLong());
}
else
m_connectionProfile = connectionProfile;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -