⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 connect the enterprise with the jca, part 2.htm

📁 本人收集的关于Java Connector Architecture的资料
💻 HTM
📖 第 1 页 / 共 4 页
字号:
Exception ex, Object 
connectionHandle)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyManagedConnection.sendEvent,2 
");<BR>&nbsp;&nbsp;&nbsp;&nbsp;myListener.sendEvent(eventType, ex, 
connectionHandle);<BR>&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;void 
removeMyConnection(MyConnection 
myCon)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyManagedConnection.removeMyConnection");<BR>&nbsp;&nbsp;&nbsp;&nbsp;connectionSet.remove(myCon);<BR>&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;void 
addMyConnection(MyConnection 
myCon)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyManagedConnection.addMyConnection");<BR>&nbsp;&nbsp;&nbsp;&nbsp;connectionSet.add(myCon);<BR>&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;ManagedConnectionFactory 
getManagedConnectionFactory()<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyManagedConnection.getManagedConnectionFactory");<BR>&nbsp;&nbsp;&nbsp;&nbsp;return 
mcf;<BR>&nbsp;&nbsp;}<BR><BR>}<BR></CODE>
<P><STRONG>MyConnectionEventListener </STRONG><BR>For its part, the 
<CODE>MyConnectionEventListener</CODE> class allows the application server to 
register callbacks for the adapter. The application server can then perform 
operations, connection-pool maintenance, for example, based on the connection 
state: 
<P><CODE>
<P><BR>package myjca;<BR><BR>import java.util.Vector;<BR>import 
javax.resource.spi.ConnectionEvent;<BR>import 
javax.resource.spi.ConnectionEventListener;<BR>import 
javax.resource.spi.ManagedConnection;<BR><BR>public class 
MyConnectionEventListener<BR>&nbsp;&nbsp;&nbsp;&nbsp;implements 
javax.sql.ConnectionEventListener<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;private Vector 
listeners;<BR>&nbsp;&nbsp;&nbsp;&nbsp;private ManagedConnection 
mcon;<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public 
MyConnectionEventListener(ManagedConnection 
mcon)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyConnectionEventListener");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.mcon 
= mcon;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public void 
sendEvent(int eventType, Exception ex, Object 
connectionHandle)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyConnectionEventListener.sendEvent");<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public 
void addConnectorListener(ConnectionEventListener 
l)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyConnectionEventListener.addConnectorListener");<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public 
void removeConnectorListener(ConnectionEventListener 
l)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyConnectionEventListener.removeConnectorListener");<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public 
void connectionClosed(javax.sql.ConnectionEvent 
connectionevent)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyConnectionEventListener.connectorClosed");<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public 
void connectionErrorOccurred(javax.sql.ConnectionEvent 
event)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyConnectionEventListener.connectorErrorOccurred");<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>}<BR></CODE>
<P><STRONG>MyConnectionMetaData </STRONG><BR>The 
<CODE>MyConnectionMetaData</CODE> class provides meta information -- product 
name, the maximum number of connections allowed, and so on -- regarding the 
managed connection and the underlying physical connection class: 
<P><CODE>
<P><BR>package myjca;<BR><BR>import javax.resource.ResourceException;<BR>import 
javax.resource.spi.*;<BR><BR><BR>public class 
MyConnectionMetaData<BR>&nbsp;&nbsp;&nbsp;&nbsp;implements 
ManagedConnectionMetaData<BR>{<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;private 
MyManagedConnection mc;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public 
MyConnectionMetaData(MyManagedConnection 
mc)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyConnectionMetaData.constructor");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.mc 
= mc;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public String 
getEISProductName()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throws 
ResourceException<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyConnectionMetaData.getEISProductName");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 
"myJCA";<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public 
String 
getEISProductVersion()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throws 
ResourceException<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyConnectionMetaData.getEISProductVersion");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 
"1.0";<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public 
int 
getMaxConnections()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throws 
ResourceException<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyConnectionMetaData.getMaxConnections");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 
5;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public String 
getUserName()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throws 
ResourceException<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
return mc.getUserName();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>}<BR></CODE>
<P><STRONG>MyConnection </STRONG><BR>Next up: the <CODE>MyConnection</CODE> 
class, which represents the underlying physical connection to the EIS. 
<CODE>MyConnection</CODE> is one of the few classes that does not implement an 
interface in the JCA specification. The implementation below is simplistic, but 
a working implementation might contain connectivity code using sockets, as well 
as other functionality: 
<P><CODE>
<P><BR>package myjca;<BR><BR>public class 
MyConnection<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;private MyManagedConnection 
mc;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public MyConnection(MyManagedConnection 
mc)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyConnection");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.mc = 
mc;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}<BR></CODE>
<P><STRONG>MyConnectionRequestInfo </STRONG><BR>The 
<CODE>MyConnectionRequestInfo</CODE> class contains the data (such as the user 
name, password, and other information) necessary to establish a connection: 
<P><CODE>
<P><BR>package myjca;<BR><BR>import 
javax.resource.spi.ConnectionRequestInfo;<BR><BR>public class 
MyConnectionRequestInfo<BR>&nbsp;&nbsp;&nbsp;&nbsp;implements 
ConnectionRequestInfo<BR>{<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;private String 
user;<BR>&nbsp;&nbsp;&nbsp;&nbsp;private String 
password;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public MyConnectionRequestInfo(String 
user, String 
password)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyConnectionRequestInfo");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.user 
= user;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.password = 
password;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public 
String 
getUser()<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyConnectionRequestInfo.getUser");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 
user;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public String 
getPassword()<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyConnectionRequestInfo.getPassword");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 
password;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public 
boolean equals(Object 
obj)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyConnectionRequestInfo.equals");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(obj 
== 
null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 
false;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(obj instanceof 
MyConnectionRequestInfo)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyConnectionRequestInfo 
other = 
(MyConnectionRequestInfo)obj;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 
isEqual(user, other.user) &amp;&amp; isEqual(password, 
other.password);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} 
else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 
false;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public 
int 
hashCode()<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyConnectionRequestInfo.hashCode");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String 
result = "" + user + 
password;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 
result.hashCode();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;private 
boolean isEqual(Object o1, Object 
o2)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyConnectionRequestInfo.isEqual");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(o1 
== 
null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 
o2 == 
null;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 
o1.equals(o2);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>}<BR></CODE>
<P><STRONG>MyDataSource </STRONG><BR>The <CODE>MyDataSource</CODE> class serves 
as a connection factory for the underlying connections. Because the sample 
adapter does not implement the CCI interfaces, it implements the 
<CODE>DataSource</CODE> interface in the <CODE>javax.sql</CODE> package: 
<P><CODE>
<P><BR>package myjca;<BR><BR>import java.io.PrintWriter;<BR>import 
java.io.Serializable;<BR>import java.sql.*;<BR>import 
javax.naming.Reference;<BR>import javax.resource.Referenceable;<BR>import 
javax.resource.ResourceException;<BR>import 
javax.resource.spi.ConnectionManager;<BR>import 
javax.resource.spi.ManagedConnectionFactory;<BR>import 
javax.sql.DataSource;<BR><BR><BR>public class 
MyDataSource<BR>&nbsp;&nbsp;&nbsp;&nbsp;implements DataSource, Serializable, 
Referenceable<BR>{<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;private String 
desc;<BR>&nbsp;&nbsp;&nbsp;&nbsp;private ManagedConnectionFactory 
mcf;<BR>&nbsp;&nbsp;&nbsp;&nbsp;private ConnectionManager 
cm;<BR>&nbsp;&nbsp;&nbsp;&nbsp;private Reference 
reference;<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public 
MyDataSource(ManagedConnectionFactory mcf, ConnectionManager 
cm)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyDataSource");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.mcf = 
mcf;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(cm == 
null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.cm 
= new 
MyConnectionManager();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.cm 
= cm;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public 
Connection 
getConnection()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throws 
SQLException<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyDataSource.getConnection,1");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 
(Connection)cm.allocateConnection(mcf, 
null);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(ResourceException 
ex)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw 
new 
SQLException(ex.getMessage());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public 
Connection getConnection(String username, String 
password)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throws 
SQLException<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In 
MyDataSource.getConnection,2");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;javax.resource.spi.ConnectionRequestInfo 
info = new MyConnectionRequestInfo(username, 
password);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 
(Connection)cm.allocateConnection(mcf, 
info);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(ResourceException 
ex)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw 
new 
SQLException(ex.getMessage());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public 
int getLoginTimeout()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throws 
SQLException<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 
DriverManager.getLoginTimeout();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public 
void setLoginTimeout(int 
seconds)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throws 
SQLException<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DriverManager.setLoginTimeout(seconds);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public 
PrintWriter 
getLogWriter()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throws 
SQLException<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 
DriverManager.getLogWriter();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public 
void setLogWriter(PrintWriter 
out)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throws 
SQLException<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DriverManager.setLogWriter(out);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;public 
String 
getDescription()<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -