|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
轮性能微软曾做过一个例子,就是同一个项目用java和.net来作,结果开发周期,.net是java的一半,性能java是.net的十分之一,代码量java是.net的三倍。呵呵,这说明了什么,.net的全方位比java好。但是有的人说.net不能跨平台,这个问题我和我同学曾讨论过,都认为微软的.net很可能早都可以跨平台了,但是微软为了保护他们的操作系统,所以才没有推出跨平台的.net,只是推出了跨语言的.net,js在JSP里有两种完成的举措,一种是用JNDI(JavaNamingDirectoryInterface),这大概和使用服务器有关,假如是Resin,先在resin.conf里界说
<resource-ref>
<res-ref-name>jdbc/oracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<init-paramdriver-name="oracle.jdbc.driver.OracleDriver"/>
<init-paramurl="jdbc:oracle:thin:@192.168.1.1:1521:oracle"/>
<init-paramuser="system"/>
<init-parampassword="manager"/>
<init-parammax-connections="20"/>
<init-parammax-idle-time="30"/>
</resource-ref>
假如为Tomcat,在Server.xml内里界说,有关的材料能够查文档,然后在jsp里如许用
try{
javax.naming.Contextenv=(Context)newInitialContext().lookup("java:comp/env");
javax.sql.DataSourcepool=(javax.sql.DataSource)env.lookup("jdbc/oracle");
}catch(Exceptione){System.err.println("Exceptionerror:"+e.getMessage());}
try{
Connectionconn=pool.getConnection();
}catch(Exceptione){System.out.println("Exceptionerror:"+e.getMessage());}
经由过程这段代码,你就取得从毗连池里取得了一个毗连conn。假如想用一般的毗连池,那只能用JavaBean了,先写一个ConnectionPool的java的类,然后间接从毗连池中取得毗连,上面是我一个毗连池的JavaBean
ConnectionPool.java以下:
importjava.io.PrintStream;
importjava.sql.Connection;
importjava.util.Vector;
//Referencedclassesofpackagecom.ilovejsp.sql:
//DataSource,PooledConnection
publicclassConnectionPool
{
privateVectorpool;
privateintsize;
DataSourcedb;
publicConnectionPool()
{
pool=null;
size=0;
db=newDataSource();
}
publicvoidsetSize(intvalue)
{
if(value>1)
size=value;
}
publicintgetSize()
{
returnsize;
}
publicsynchronizedvoidinitPool()
throwsException
{
try
{
for(intx=0;x<size;x++)
{
Connectionconn=db.getConnection();
if(conn!=null)
{
PooledConnectionpcon=newPooledConnection(conn);
addConnection(pcon);
}
}
}
catch(Exceptione)
{
System.err.println(e.getMessage());
}
}
privatevoidaddConnection(PooledConnectionpcon)
{
if(pool==null)
pool=newVector(size);
pool.addElement(pcon);
}
publicsynchronizedvoidreleaseConnection(Connectionconn)
{
intx=0;
do
{
if(x>=pool.size())
break;
PooledConnectionpcon=(PooledConnection)pool.elementAt(x);
if(pcon.getConnection()==conn)
{
System.err.println("ReleaseConnection".concat(String.valueOf(String.valueOf(x))));
pcon.setInUse(false);
break;
}
x++;
}
while(true);
}
publicsynchronizedConnectiongetConnection()
throwsException
{
PooledConnectionpcon=null;
for(intx=0;x<pool.size();x++)
{
pcon=(PooledConnection)pool.elementAt(x);
if(!pcon.inUse())
{
pcon.setInUse(true);
returnpcon.getConnection();
}
}
try
{
Connectionconn=db.getConnection();
pcon=newPooledConnection(conn);
pcon.setInUse(true);
pool.addElement(pcon);
}
catch(Exceptione)
{
System.err.println("Exceptionerror:".concat(String.valueOf(String.valueOf(e.getMessage()))));
}
returnpcon.getConnection();
}
publicsynchronizedvoidemptyPool()
{
for(intx=0;x<pool.size();x++)
{
System.err.println("ClosingJdbcConnection".concat(String.valueOf(String.valueOf(x))));
PooledConnectionpcon=(PooledConnection)pool.elementAt(x);
if(!pcon.inUse())
{
pcon.close();
continue;
}
try
{
Thread.sleep(3000L);
pcon.close();
}
catch(Exceptione)
{
System.out.println("Exception:".concat(String.valueOf(String.valueOf(e.getMessage()))));
}
}
db.close();
}
}
testpool.jsp内容以下:
<%@pagelanguage="java"contentType="text/html;charset=gb2312"%>
<%@pageimport="java.sql.*"%>
<HTML>
<HEAD>
<TITLE>体系数据信息</TITLE>
</HEAD>
<BODY>
<%ConnectionPooldb=newConnectionPool();
Connectionconn=db.getConnection();
Statementstmt=conn.createStatement();
Stringsql1="select*frompg_database";
ResultSetrs=stmt.executeQuery(sql1);
%>
<TABLE><TR><TD>体系数据库信息</TD></TR>
<TR><TD>
<%while(rs.next()){
%>
<%=rs.getString(1)%>
<%}
rs.close();%>
</TR></TD>
<TABLE><TR><TD>体系字段信息</TD></TR>
<TR><TD>
<%Stringsql2="select*frompg_type";
rs=stmt.executeQuery(sql2);
while(rs.next()){
%>
(<%=rs.getString(1)%>)
<%}
rs.close();
db.close();%>
</TR></TD>
</BODY>
</HTML>
轮性能微软曾做过一个例子,就是同一个项目用java和.net来作,结果开发周期,.net是java的一半,性能java是.net的十分之一,代码量java是.net的三倍。呵呵,这说明了什么,.net的全方位比java好。但是有的人说.net不能跨平台,这个问题我和我同学曾讨论过,都认为微软的.net很可能早都可以跨平台了,但是微软为了保护他们的操作系统,所以才没有推出跨平台的.net,只是推出了跨语言的.net, |
|