Java Doc for Driver.java in  » Database-JDBC-Connection-Pool » sequoia-2.10.9 » org » continuent » sequoia » driver » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Database JDBC Connection Pool » sequoia 2.10.9 » org.continuent.sequoia.driver 
Source Cross Reference  Class Diagram Java Document (Java Doc) 


java.lang.Object
   org.continuent.sequoia.driver.Driver

Driver
public class Driver implements java.sql.Driver(Code)
Sequoia Driver for client side. This driver is a generic driver that is designed to replace any specific JDBC driver that could be used by a client. The client only has to know the node where the Sequoia controller is running and the database he wants to access (the RDBMS could be PostgreSQL, Oracle, DB2, Sybase, MySQL or whatever, we only need the name of the database and the Sequoia controller will be responsible for finding the RDBMs hosting this database).

The Sequoia driver can be loaded from the client with: Class.forName("org.continuent.sequoia.driver.Driver");

The URL expected for the use with Sequoia is: jdbc:sequoia://host1:port1,host2:port2/database.

At least one host must be specified. If several hosts are given, one is picked up randomly from the list. If the currently selected controller fails, another one is automatically picked up from the list.

Default port number is 25322 if omitted.

Those 2 examples are equivalent:

 DriverManager.getConnection("jdbc:sequoia://localhost:/tpcw");
 DriverManager.getConnection("jdbc:sequoia://localhost:25322/tpcw");
 

Examples using 2 controllers for fault tolerance:

 DriverManager
 .getConnection("jdbc:sequoia://cluster1.continuent.org:25322,cluster2.continuent.org:25322/tpcw");
 DriverManager
 .getConnection("jdbc:sequoia://localhost:25322,remote.continuent.org:25322/tpcw");
 DriverManager
 .getConnection("jdbc:sequoia://smpnode.com:25322,smpnode.com:1098/tpcw");
 

The driver accepts a number of options that starts after a ? sign and are separated by an & sign. Each option is a name=value pair. Example: jdbc:sequoia://host/db?option1=value1;option2=value2.

Currently supported options are:

 user: user login
 password: user password
 escapeBackslash: set this to true to escape backslashes when performing escape processing of PreparedStatements
 escapeSingleQuote: set this to true to escape single quotes (') when performing escape processing of PreparedStatements
 escapeCharacter: use this character to prepend and append to the values when performing escape processing of PreparedStatements
 connectionPooling: set this to false if you do not want the driver to perform transparent connection pooling
 preferredController: defines the strategy to use to choose a preferred controller to connect to
 - jdbc:sequoia://node1,node2,node3/myDB?preferredController=ordered 
 Always connect to node1, and if not available then try to node2 and
 finally if none are available try node3.
 - jdbc:sequoia://node1,node2,node3/myDB?preferredController=random
 Pickup a controller node randomly (default strategy)
 - jdbc:sequoia://node1,node2:25343,node3/myDB?preferredController=node2:25343,node3 
 Round-robin between node2 and node3, fallback to node1 if none of node2
 and node3 is available.
 - jdbc:sequoia://node1,node2,node3/myDB?preferredController=roundRobin
 Round robin starting with first node in URL.
 pingDelayInMs Interval in milliseconds between two pings of a controller. The
 default is 1000 (1 second).
 controllerTimeoutInMs timeout in milliseconds after which a controller is
 considered as dead if it did not respond to pings. Default is 25000 (25
 seconds).
 persistentConnection: defines if a connection should remain persistent on 
 cluster backends between connection opening and closing (bypasses any 
 connection pooling and preserve all information relative to the connection
 context. Default is false.
 retrieveSQLWarnings: set this to true if you want the controller to retrieve
 SQL warnings. Default is false, which means that (Connection|Statement|ResultSet).getWarnings()
 will always return null.
 allowCommitWithAutoCommit: When set to true, trying to call commit/rollback
 on a connection in autoCommit will not throw an exception. If set to false
 (default) an SQLException will be thrown when commit is called on a 
 connection in autoCommit mode.
 alwaysGetGeneratedKeys: when set to true, always fetch generated keys even if 
 not requested with Statement.RETURN_GENERATED_KEYS.
 

This original code has been inspired from the PostgreSQL JDBC driver by Peter T. Mount and the MM MySQL JDBC Drivers from Mark Matthews .
author:
   Emmanuel Cecchet
author:
   Julie Marguerite
author:
   Mathieu Peltier
author:
   Marek Prochazka
author:
   Nicolas Modrzyk
author:
   Jaco Swart
author:
   Gilles Rayrat
version:
   1.0



Field Summary
final protected static  StringALLOW_COMMIT_WITH_AUTOCOMMIT_PROPERTY
    
final protected static  StringALLOW_COMMIT_WITH_AUTOCOMMIT_PROPERTY_DESCRIPTION
    
final protected static  StringALWAYS_RETRIEVE_GENERATED_KEYS_DESCRIPTION
    
final protected static  StringALWAYS_RETRIEVE_GENERATED_KEYS_PROPERTY
    
final protected static  StringCONNECTION_POOLING_PROPERTY
    
final protected static  StringCONNECTION_POOLING_PROPERTY_DESCRIPTION
    
final protected static  StringCONTROLLER_TIMEOUT_IN_MS_DESCRIPTION
    
final protected static  StringCONTROLLER_TIMEOUT_IN_MS_PROPERTY
    
final protected static  StringDATABASE_PROPERTY
    
final protected static  StringDEBUG_PROPERTY
    
final protected static  StringDEBUG_PROPERTY_DESCRIPTION
    
final public static  intDEFAULT_CONTROLLER_TIMEOUT_IN_MS
     Default timeout in milliseconds after which a controller is considered as dead if it did not respond to pings.
final public static  intDEFAULT_PING_DELAY_IN_MS
     Default interval in milliseconds between two pings of a controller.
final protected static  StringESCAPE_BACKSLASH_PROPERTY
    
final protected static  StringESCAPE_CHARACTER_PROPERTY
    
final protected static  StringESCAPE_SINGLE_QUOTE_PROPERTY
    
final protected static  StringHOST_PROPERTY
     Sequoia driver property name (if you add one, read driverProperties above).
final public static  intMAJOR_VERSION
     Driver major version.
final public static  intMINOR_VERSION
     Driver minor version.
final protected static  StringPASSWORD_PROPERTY
    
final protected static  StringPERSISTENT_CONNECTION_PROPERTY
    
final protected static  StringPERSISTENT_CONNECTION_PROPERTY_DESCRIPTION
    
final protected static  StringPING_DELAY_IN_MS_DESCRIPTION
    
final protected static  StringPING_DELAY_IN_MS_PROPERTY
    
final protected static  StringPORT_PROPERTY
    
final protected static  StringPREFERRED_CONTROLLER_PROPERTY
    
final protected static  StringPREFERRED_CONTROLLER_PROPERTY_DESCRIPTION
    
final protected static  StringRETRIEVE_SQL_WARNINGS_PROPERTY
    
final protected static  StringRETRIEVE_SQL_WARNINGS_PROPERTY_DESCRIPTION
    
final protected static  booleanSSL_ENABLED_PROPERTY
    
final protected static  StringUSER_PROPERTY
    
protected  booleanconnectionClosingThreadisAlive
    
protected static  ArrayListdriverPropertiesNames
    
protected  ArrayListpendingConnectionClosing
     List of connections that are ready to be closed.
protected  StringsequoiaUrlHeader
     Sequoia URL header.
protected  intsequoiaUrlHeaderLength
     Sequoia URL header length.

Constructor Summary
public  Driver()
     Creates a new Driver.

Method Summary
public synchronized  booleanacceptsURL(String url)
     Tests if the URL is understood by the driver.
public  StringchangeDatabaseName(String url, String newDbName)
     Change the database name in the provided URL.
public  java.sql.Connectionconnect(String url, Properties clientProperties)
     Asks the Sequoia controller if the requested database can be accessed with the provided user name and password.
protected  PropertiesfilterProperties(Properties props)
     This extracts from the (too complex) client Properties a leaner and cleaner HashMap with is: - maybe empty but never null, - holding only the keys we are interested in, - its values are guaranteed to be strings, - no complex and hidden layered "defaults".
public  booleangetConnectionPooling()
    
protected  ConnectiongetConnectionToNewController(SequoiaUrl sequoiaUrl)
     This function should be used to establish a new connection to another controller in the list.
protected  intgetDefaultTransactionIsolationLevel()
     Get the default transaction isolation level to use for this driver.
public  booleangetEscapeBackslash()
    
public  StringgetEscapeChar()
    
public  booleangetEscapeSingleQuote()
    
public  JDBCRegExpgetJDBCRegExp()
     Returns the SequoiaJDBCRegExp value.
public  intgetMajorVersion()
    
public  intgetMinorVersion()
    
public  booleangetPersistentConnection()
    
public  DriverPropertyInfo[]getPropertyInfo(String url, Properties info)
     This method is intended to allow a generic GUI tool to discover what properties it should prompt a human for in order to get enough information to connect to a database.

The only properties supported by Sequoia are:

  • HOST_PROPERTY
  • PORT_PROPERTY
  • DATABASE_PROPERTY
  • USER_PROPERTY
  • PASSWORD_PROPERTY
  • ESCAPE_BACKSLASH_PROPERTY
  • ESCAPE_SINGLE_QUOTE_PROPERTY
  • ESCAPE_CHARACTER_PROPERTY
  • CONNECTION_POOLING_PROPERTY
  • PREFERRED_CONTROLLER_PROPERTY
  • PING_DELAY_IN_MS_PROPERTY
  • CONTROLLER_TIMEOUT_IN_MS_PROPERTY
  • DEBUG_PROPERTY
  • PERSISTENT_CONNECTION_PROPERTY
  • RETRIEVE_SQL_WARNINGS_PROPERTY
  • ALLOW_COMMIT_WITH_AUTOCOMMIT_PROPERTY

Parameters:
  url - the URL of the database to connect to
Parameters:
  info - a proposed list of tag/value pairs that will be sent on connectopen.
public  booleangetRetrieveGeneratedKeys()
    
public  booleangetRetrieveSQLWarnings()
    
public  booleanjdbcCompliant()
     Reports whether the driver is a genuine JDBC compliant driver.

Field Detail
ALLOW_COMMIT_WITH_AUTOCOMMIT_PROPERTY
final protected static String ALLOW_COMMIT_WITH_AUTOCOMMIT_PROPERTY(Code)



ALLOW_COMMIT_WITH_AUTOCOMMIT_PROPERTY_DESCRIPTION
final protected static String ALLOW_COMMIT_WITH_AUTOCOMMIT_PROPERTY_DESCRIPTION(Code)



ALWAYS_RETRIEVE_GENERATED_KEYS_DESCRIPTION
final protected static String ALWAYS_RETRIEVE_GENERATED_KEYS_DESCRIPTION(Code)



ALWAYS_RETRIEVE_GENERATED_KEYS_PROPERTY
final protected static String ALWAYS_RETRIEVE_GENERATED_KEYS_PROPERTY(Code)



CONNECTION_POOLING_PROPERTY
final protected static String CONNECTION_POOLING_PROPERTY(Code)



CONNECTION_POOLING_PROPERTY_DESCRIPTION
final protected static String CONNECTION_POOLING_PROPERTY_DESCRIPTION(Code)



CONTROLLER_TIMEOUT_IN_MS_DESCRIPTION
final protected static String CONTROLLER_TIMEOUT_IN_MS_DESCRIPTION(Code)



CONTROLLER_TIMEOUT_IN_MS_PROPERTY
final protected static String CONTROLLER_TIMEOUT_IN_MS_PROPERTY(Code)



DATABASE_PROPERTY
final protected static String DATABASE_PROPERTY(Code)



DEBUG_PROPERTY
final protected static String DEBUG_PROPERTY(Code)



DEBUG_PROPERTY_DESCRIPTION
final protected static String DEBUG_PROPERTY_DESCRIPTION(Code)



DEFAULT_CONTROLLER_TIMEOUT_IN_MS
final public static int DEFAULT_CONTROLLER_TIMEOUT_IN_MS(Code)
Default timeout in milliseconds after which a controller is considered as dead if it did not respond to pings. Default is 25000 (25 seconds).



DEFAULT_PING_DELAY_IN_MS
final public static int DEFAULT_PING_DELAY_IN_MS(Code)
Default interval in milliseconds between two pings of a controller. The default is 1000 (1 second)



ESCAPE_BACKSLASH_PROPERTY
final protected static String ESCAPE_BACKSLASH_PROPERTY(Code)



ESCAPE_CHARACTER_PROPERTY
final protected static String ESCAPE_CHARACTER_PROPERTY(Code)



ESCAPE_SINGLE_QUOTE_PROPERTY
final protected static String ESCAPE_SINGLE_QUOTE_PROPERTY(Code)



HOST_PROPERTY
final protected static String HOST_PROPERTY(Code)
Sequoia driver property name (if you add one, read driverProperties above).



MAJOR_VERSION
final public static int MAJOR_VERSION(Code)
Driver major version.



MINOR_VERSION
final public static int MINOR_VERSION(Code)
Driver minor version.



PASSWORD_PROPERTY
final protected static String PASSWORD_PROPERTY(Code)



PERSISTENT_CONNECTION_PROPERTY
final protected static String PERSISTENT_CONNECTION_PROPERTY(Code)



PERSISTENT_CONNECTION_PROPERTY_DESCRIPTION
final protected static String PERSISTENT_CONNECTION_PROPERTY_DESCRIPTION(Code)



PING_DELAY_IN_MS_DESCRIPTION
final protected static String PING_DELAY_IN_MS_DESCRIPTION(Code)



PING_DELAY_IN_MS_PROPERTY
final protected static String PING_DELAY_IN_MS_PROPERTY(Code)



PORT_PROPERTY
final protected static String PORT_PROPERTY(Code)



PREFERRED_CONTROLLER_PROPERTY
final protected static String PREFERRED_CONTROLLER_PROPERTY(Code)



PREFERRED_CONTROLLER_PROPERTY_DESCRIPTION
final protected static String PREFERRED_CONTROLLER_PROPERTY_DESCRIPTION(Code)



RETRIEVE_SQL_WARNINGS_PROPERTY
final protected static String RETRIEVE_SQL_WARNINGS_PROPERTY(Code)



RETRIEVE_SQL_WARNINGS_PROPERTY_DESCRIPTION
final protected static String RETRIEVE_SQL_WARNINGS_PROPERTY_DESCRIPTION(Code)



SSL_ENABLED_PROPERTY
final protected static boolean SSL_ENABLED_PROPERTY(Code)
Get the sequoia.ssl.enabled system property to check if SSL is enabled



USER_PROPERTY
final protected static String USER_PROPERTY(Code)



connectionClosingThreadisAlive
protected boolean connectionClosingThreadisAlive(Code)



driverPropertiesNames
protected static ArrayList driverPropertiesNames(Code)
List of driver properties initialized in the static class initializer

!!! Static intializer needs to be udpated when new properties are added !!!




pendingConnectionClosing
protected ArrayList pendingConnectionClosing(Code)
List of connections that are ready to be closed.



sequoiaUrlHeader
protected String sequoiaUrlHeader(Code)
Sequoia URL header.



sequoiaUrlHeaderLength
protected int sequoiaUrlHeaderLength(Code)
Sequoia URL header length.




Constructor Detail
Driver
public Driver()(Code)
Creates a new Driver. Only an actual instance can be registered to the DriverManager, see call to java.sql.DriverManager.registerDriver(java.sql.Driver) in static initializer block just above.




Method Detail
acceptsURL
public synchronized boolean acceptsURL(String url) throws SQLException(Code)
Tests if the URL is understood by the driver. Simply tries to construct a parsed URLs and catch the failure.
Parameters:
  url - the JDBC URL. true if the URL is correct, otherwise an exceptionwith extensive error message is thrown.
exception:
  SQLException - if the URL is incorrect an explicit error messageis given.



changeDatabaseName
public String changeDatabaseName(String url, String newDbName) throws SQLException(Code)
Change the database name in the provided URL.
Parameters:
  url - URL to parse
Parameters:
  newDbName - new database name to insert the updated URL
throws:
  SQLException - if an error occurs while parsing the url



connect
public java.sql.Connection connect(String url, Properties clientProperties) throws SQLException, VirtualDatabaseUnavailableException, NoMoreControllerException(Code)
Asks the Sequoia controller if the requested database can be accessed with the provided user name and password. If the Sequoia controller can't access the requested database, an SQLException is thrown, else a "fake" Connection is returned to the user so that he or she can create Statements.
Parameters:
  url - the URL of the Sequoia controller to which to connect.
Parameters:
  clientProperties - a list of arbitrary string tag/value pairs asconnection arguments (usually at least a "user" and "password").In case of conflict, this list overrides settings from the url;see SEQUOIA-105 a Connection object that represents a connection tothe database through the Sequoia Controller.
exception:
  SQLException - if an error occurs.



filterProperties
protected Properties filterProperties(Properties props)(Code)
This extracts from the (too complex) client Properties a leaner and cleaner HashMap with is: - maybe empty but never null, - holding only the keys we are interested in, - its values are guaranteed to be strings, - no complex and hidden layered "defaults". See SEQUOIA-105 and SEQUOIA-440
Parameters:
  props - to filter filtered properties
throws:
  SQLException -



getConnectionPooling
public boolean getConnectionPooling()(Code)
True, as connection pooling is activated by default



getConnectionToNewController
protected Connection getConnectionToNewController(SequoiaUrl sequoiaUrl) throws AuthenticationException, NoMoreControllerException, VirtualDatabaseUnavailableException, GeneralSecurityException(Code)
This function should be used to establish a new connection to another controller in the list. It monitors "virtualdatabase not available" failures by calling Driver.connectToNextController(SequoiaUrl) only a limited number of times (number = number of available controllers).
Parameters:
  sequoiaUrl - Sequoia URL object including parameters connection to the next available controller
throws:
  AuthenticationException - if the authentication has failed
throws:
  NoMoreControllerException - if all controllers in the list are down
throws:
  DriverSQLException - if the connection cannot be established with thecontroller
throws:
  VirtualDatabaseUnavailableException - if none of the remainingcontrollers has the desired vdb



getDefaultTransactionIsolationLevel
protected int getDefaultTransactionIsolationLevel()(Code)
Get the default transaction isolation level to use for this driver. java.sql.Connection.TRANSACTION_READ_UNCOMMITTED



getEscapeBackslash
public boolean getEscapeBackslash()(Code)
True, escape processing of backslash is ON by default



getEscapeChar
public String getEscapeChar()(Code)
the default escape character



getEscapeSingleQuote
public boolean getEscapeSingleQuote()(Code)
True, escape processing of single quote is ON by default



getJDBCRegExp
public JDBCRegExp getJDBCRegExp()(Code)
Returns the SequoiaJDBCRegExp value. Returns the SequoiaJDBCRegExp.



getMajorVersion
public int getMajorVersion()(Code)
Gets the driver's major version number the driver's major version number



getMinorVersion
public int getMinorVersion()(Code)
Gets the driver's minor version number the driver's minor version number



getPersistentConnection
public boolean getPersistentConnection()(Code)
False, as connection are not persistent by default.



getPropertyInfo
public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException(Code)
This method is intended to allow a generic GUI tool to discover what properties it should prompt a human for in order to get enough information to connect to a database.

The only properties supported by Sequoia are:

  • HOST_PROPERTY
  • PORT_PROPERTY
  • DATABASE_PROPERTY
  • USER_PROPERTY
  • PASSWORD_PROPERTY
  • ESCAPE_BACKSLASH_PROPERTY
  • ESCAPE_SINGLE_QUOTE_PROPERTY
  • ESCAPE_CHARACTER_PROPERTY
  • CONNECTION_POOLING_PROPERTY
  • PREFERRED_CONTROLLER_PROPERTY
  • PING_DELAY_IN_MS_PROPERTY
  • CONTROLLER_TIMEOUT_IN_MS_PROPERTY
  • DEBUG_PROPERTY
  • PERSISTENT_CONNECTION_PROPERTY
  • RETRIEVE_SQL_WARNINGS_PROPERTY
  • ALLOW_COMMIT_WITH_AUTOCOMMIT_PROPERTY

Parameters:
  url - the URL of the database to connect to
Parameters:
  info - a proposed list of tag/value pairs that will be sent on connectopen. an array of DriverPropertyInfo objects describingpossible properties. This array may be an empty array if noproperties are required (note that this override any setting thatmight be set in the URL).
exception:
  SQLException - if the url is not valid
See Also:   java.sql.Driver.getPropertyInfo



getRetrieveGeneratedKeys
public boolean getRetrieveGeneratedKeys()(Code)
False, as retrieval of generated keys is not forced by default.



getRetrieveSQLWarnings
public boolean getRetrieveSQLWarnings()(Code)
False, as retrieval of SQL warnings is disabled by default.



jdbcCompliant
public boolean jdbcCompliant()(Code)
Reports whether the driver is a genuine JDBC compliant driver. A driver may only report true here if it passes the JDBC compliance tests, otherwise it is required to return false. JDBC compliance requires full support for the JDBC API and full support for SQL 92 Entry Level. We cannot ensure that the underlying JDBC drivers will be JDBC compliant, so it is safer to return false. always false



Methods inherited from java.lang.Object
native protected Object clone() throws CloneNotSupportedException(Code)(Java Doc)
public boolean equals(Object obj)(Code)(Java Doc)
protected void finalize() throws Throwable(Code)(Java Doc)
final native public Class getClass()(Code)(Java Doc)
native public int hashCode()(Code)(Java Doc)
final native public void notify()(Code)(Java Doc)
final native public void notifyAll()(Code)(Java Doc)
public String toString()(Code)(Java Doc)
final native public void wait(long timeout) throws InterruptedException(Code)(Java Doc)
final public void wait(long timeout, int nanos) throws InterruptedException(Code)(Java Doc)
final public void wait() throws InterruptedException(Code)(Java Doc)

www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.