该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2003-12-08
我会试一下 写道 如果在业务流程中会使用多个数据库服务器,如何在Filter类中进行设置?
我觉得可以这样: SessionFactory中提供openSession(Connection c)方法。 你可以自己写一个DbConnectionMgr的singleton类。 通过DbConnectionMgr.getConnection(String jndiname); 来从不同的数据库获得的连接来建立session。因为我不知道hibernate如何配置多个数据源,就算配置了,我想hibernate也不知道应该从哪个个数据源取得连接。只好如此。 这不过是想当然而已。会不会引发别的问题还不一定。 |
|
返回顶楼 | |
发表时间:2003-12-09
我想了一下,可能在Filter中只是关闭本次请求的连接更好一些,而取得连接可以由具体使用的代码在用的时候取,这样只要具体使用的代码知道该使用哪个数据库就可以了!
不知道对不对? |
|
返回顶楼 | |
发表时间:2003-12-09
我会试一下 写道 我想了一下,可能在Filter中只是关闭本次请求的连接更好一些,而取得连接可以由具体使用的代码在用的时候取,这样只要具体使用的代码知道该使用哪个数据库就可以了!
不知道对不对? 对,我就是这么做的。 |
|
返回顶楼 | |
发表时间:2004-01-13
这样将一个事务的长度,扩大到了一个request,并且将一个connection的保持时间扩大到了一个request,显然对性能是由影响的,如果每个request都要对数据库访问的话,如果只开放40个数据库连接,那么你的应用同一时间只能处理少于40个request(还要考虑事务的相互排斥)显然不是适合大型应用
|
|
返回顶楼 | |
发表时间:2004-01-13
大型应用的话,数据库连接至少也要好几百了。其实就是我们这个论坛,在上线的人数多的时候,MySQL连接数都会开到50多个。我觉得你说的这个问题根本据不是问题。
|
|
返回顶楼 | |
发表时间:2004-01-13
不好意思,我只是大个比方,其实当然不止40个,我们公司上次开发的系统运行是是开放300个,但是如果你的系统是以事务性处理为主(可能同时对大量的数据操作的时候)对事务的要求就很高,而且数据库的连接是很昂贵的资源,试想一下就算有1000个连接,呢们用threadLocal也只能同时有处理1000个request!在处理高峰的时候,这可能成为一个瓶劲! 至于这个论坛,读的操作比较多,另外对事务的要求也不是很高.
|
|
返回顶楼 | |
发表时间:2004-01-17
Session 不公用如何实现事务?
|
|
返回顶楼 | |
发表时间:2004-01-17
贺兰山双头狼 写道 Session不是线程安全的,如果不关闭大家共用的话,会不会引起问题?
为什么会造成公用的情况??。。。 引用 我在看Hibernate网站上提供的例子,他们在每次调用session的时候都是先打开然后关闭,他们为什么这样做? hb文档上的例子是在每一个函数里面都打开关闭session一次,但并不表示所有的地方都要这样做,因为那是一个局部的例子,只能这样表达。gavinking在后面的章节中说明了,在web应用中开关session推荐放在filter中完成。 |
|
返回顶楼 | |
发表时间:2004-01-19
chill 写道 org.xml.sax.SAXParseException: Element type "filter" must be declared. at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Un known Source); at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source); at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source); at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source); at org.apache.xerces.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source); at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown Sourc e); at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElemen t(Unknown Source);(Compiled Code); 我照着做了,出现如上错误! 我得web.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd"> <web-app id="WebApp_1068866653656"> <display-name>CenPortal</display-name> <servlet id="Servlet_1068866556453"> <servlet-name>jetspeed</servlet-name> <servlet-class>org.apache.turbine.Turbine</servlet-class> <init-param id="InitParam_1068866653672"> <param-name>properties</param-name> <param-value>WEB-INF/conf/TurbineResources.properties</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <filter> <filter-name>MyFilter</filter-name> <filter-class>com.Servlet.filter.myfilter</filter-class> </filter> <filter-mapping> <filter-name>MyFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet-mapping id="ServletMapping_1068866653672"> <servlet-name>jetspeed</servlet-name> <url-pattern>/portal/*</url-pattern> </servlet-mapping> <servlet-mapping id="ServletMapping_1068866653673"> <servlet-name>jetspeed</servlet-name> <url-pattern>/jetspeed/*</url-pattern> </servlet-mapping> <mime-mapping id="MimeMapping_1068866653672"> <extension>wbmp</extension> <mime-type>image/vnd.wap.wbmp</mime-type> </mime-mapping> <mime-mapping id="MimeMapping_1068866653673"> <extension>wml</extension> <mime-type>text/vnd.wap.wml</mime-type> </mime-mapping> <mime-mapping id="MimeMapping_1068866653674"> <extension>wmls</extension> <mime-type>text/vnd.wap.wmlscript</mime-type> </mime-mapping> <welcome-file-list id="WelcomeFileList_1068866653672"> <welcome-file>index.jsp</welcome-file> <welcome-file>index.wml</welcome-file> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app> ################### 声明filter必须在servlet前面,请参看web.xml的dtd |
|
返回顶楼 | |
发表时间:2005-03-15
怎么感觉有点像CS中的"长事务"?
|
|
返回顶楼 | |