|
--1992年sql標準,連接條件和過濾條件寫在一起。
select ename,dname,grade
from emp e,dept d,salgrade s
where e.deptno = d.deptno and e.sal between s.losal and s.hisal and job<>'CLERK';
--1999年sql標準,連接條件和過濾條件分開
select ename,dname,grade
from emp e join dept d on (e.deptno = d.deptno)
join salgrade s on (e.sal between s.losal and s.hisal)
where ename not like '_A%';
increase the size of the pool and retry..] - [org.hibernate.util.JDBCExceptionReporter] -950125750 [[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)']
PCIS[2010-07-01 12:51:47,456]>> WARN>> [SQL Error: 0, SQLState: null] - [org.hibernate.util.JDBCExceptionReporter] -950125750 [[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)']
PCIS[2010-07-01 12:51:47,456]>>ERROR>> [Cannot obtain connection: driverURL = jdbc:weblogic:pool:pcis_ts, props = {EmulateTwoPhaseCommit=false, connectionPoolID=pcis_ts, jdbcTxDataSource=true, LoggingLastResource=false, dataSourceName=pcis_ts}] - [org.hibernate.util.JDBCExceptionReporter] -950125750 [[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)']
PCIS[2010-07-01 12:51:47,456]>> WARN>> [SQL Error: 0, SQLState: null] - [org.hibernate.util.JDBCExceptionReporter] -950125750 [[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)']
PCIS[2010-07-01 12:51:47,456]>>ERROR>> [weblogic.common.resourcepool.ResourceLimitException: No resources currently available in pool pcis_ts to allocate to applications, please increase the size of the pool and retry..] - [org.hibernate.util.JDBCExceptionReporter] -950125750 [[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)']
PCIS[2010-07-01 12:51:47,456]>> WARN>> [SQL Error: 0, SQLState: null] - [org.hibernate.util.JDBCExceptionReporter] -950125750 [[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)']
PCIS[2010-07-01 12:51:47,456]>>ERROR>> [Cannot obtain connection: driverURL = jdbc:weblogic:pool:pcis_ts, props = {EmulateTwoPhaseCommit=false, connectionPoolID=pcis_ts, jdbcTxDataSource=true, LoggingLastResource=false, dataSourceName=pcis_ts}] - [org.hibernate.util.JDBCExceptionReporter] -950125750 [[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kerne
l.Default (self-tuning)']
[com.pcis.premium.service.PremiumService] -950125750 [[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)']
org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Cannot open connection; uncategorized SQLException for SQL [???]; SQL state [null]; error code [0]; weblogic.common.resourcepool.ResourceLimitException: No resources currently available in pool pcis_ts to allocate to applications, please increase the size of the pool and retry..; nested exception is weblogic.jdbc.extensions.PoolLimitSQLException: weblogic.common.resourcepool.ResourceLimitException: No resources currently available in pool pcis_ts to allocate to applications, please increase the size of the pool and retry..
at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.translate(SQLStateSQLExceptionTranslator.java:124)
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:322)
at org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:410)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:379)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:872)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:868)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:226)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:124)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:168)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:183)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:138)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:99)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.isoftstone.iaeap.web.filter.SetCharacterEncodingFilter.doFilter(Unknown Source)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3393)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(Unknown Source)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2140)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2046)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1366)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)
Caused by: weblogic.jdbc.extensions.PoolLimitSQLException: weblogic.common.resourcepool.ResourceLimitException: No resources currently available in pool pcis_ts to allocate to applications, please increase the size of the pool and retry..
at weblogic.jdbc.common.internal.JDBCUtil.wrapAndThrowResourceException(JDBCUtil.java:242)
at weblogic.jdbc.pool.Driver.connect(Driver.java:160)
at weblogic.jdbc.jts.Driver.getNonTxConnection(Driver.java:642)
at weblogic.jdbc.jts.Driver.connect(Driver.java:124)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:339)
at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:82)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
at org.hibernate.loader.Loader.doQuery(Loader.java:673)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2213)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at org.springframework.orm.hibernate3.HibernateTemplate$30.doInHibernate(HibernateTemplate.java:881)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:374)
... 31 more
原因:主要是weblogic的連接池已滿,需要重新設置或者重啟weblogic的AdminServer服務器進行釋放連接。
操作:進入weblogic控制臺,選擇:域-->Services-->JDBC-->Data Source-->點擊control-->選中AdminServer,對其重啟即可。
select chr(65) from dual;
select ascii('A') from dual; --求編碼
select ename from emp where lower(ename) like '_a%' -- upper大寫
select round(23.652,2) from dual; -- 四舍五入 23.65,round(23.652)為24
select substr(ename,1,3) from emp; --從第一個開始,總接取3個。
select ename,sal,deptno from emp where length(sal)>3;
select to_char(sal,'$99,999.9999') from emp; --'L00000.0000'千位不夠補0
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;
select ename,hiredate from emp where hiredate>to_date('1981-2-20 12:34:56','YYYY-MM-DD HH24:MI:SS');
select sal from emp where sal>to_number('$1,250.00','$9,999.99');
select ename,sal*12 + nvl(comm,0) from emp; --對空值處理
組函數:
select max(sal) from emp;
select min(sal) from emp;
select avg(sal) from emp;
select sum(sal) from emp;
select count(*) from emp; -- *求出總記錄數, count(comm)求出該列不為空的值。
select deptno,job,max(sal) from emp group by deptno,job; --按照條件組合分組
select ename from emp where sal =(select max(sal) from emp); --子查詢
update Web_Bas_Edr_Rsn set c_rsn_txt=REPLACE(c_rsn_txt,'天津','北京') where c_rsn_txt like '%天津%' --批量替換
-- having對分組進行限制,where對單行限制
select avg(sal) from emp where sal>1000 group by deptno having avg(sal) >1500 order by avg(sal) desc;
sqlplus sys/sys as sysdba;
alert user scott account unlock;
desc emp;
select ename,sal*12 from emp;
select sysdate from dual; --dual為空表
select ename,sal*12 annual_sal from emp; --別名
--數值+null 為null
select ename||sal from emp; --拼串
select ename||'aaa''bbb' from emp; --含'的拼串,''替換為'
select distinct deptno,job from emp; --去掉2個字段值的組合
select * from emp where deptno=10 and ename='CLARK';
select ename,sal from emp where sal>1500;
select ename,sal from emp where deptno<>10;
select ename,sal from emp where sal between 800 and 1500; -- sal>=800 and sal<=1500
select ename,sal,comm from emp where comm is null; --is not null
select ename,sal,comm from emp where sal in (800,1500); -- not in (800,1500)
select ename from emp where ename like '_A%' -- %為0個或多個,-為1個
select ename from emp where ename like '%\%%' -- 名字含有%,需要\為轉義字符處理
select ename from emp where ename like '%$%%' escape '$' -- 可以使用$作為轉義字符
select ename,sal,deptno from emp order by deptno asc,ename desc; -- 升序asc,降序 desc
今天想把tomcat下的程序遷移到weblogic92上,可是程序在發布到weblogic92時報下面的異常:
Home > Summary of Deployments > Summary of JDBC Data Sources > myDataSource > Summary of Deployments :
Messages
An error occurred during activation of changes, please see the log for details.
[HTTP:101064][WebAppModule(nonvhl:WebRoot)] Error parsing descriptor in Web appplication "E:\workspace\nonvhl_policy_TS\WebRoot"
weblogic.application.ModuleException: VALIDATION PROBLEMS WERE FOUND E:\workspace\nonvhl_policy_TS\WebRoot\WEB-INF\web.xml:133:5:133:5: problem: cvc-complex
-type.2.4a: Expected elements 'servlet-class@http://java.sun.com/xml/ns/j2ee jsp-file@http://java.sun.com/xml/ns/j2ee' instead of 'display-
name@http://java.sun.com/xml/ns/j2ee' here in element servlet@http://java.sun.com/xml/ns/j2ee: at weblogic.servlet.internal.WebAppModule.loadDescriptor
(WebAppModule.java:784) at weblogic.servlet.internal.WebAppModule.prepare(WebAppModule.java:275) at
weblogic.application.internal.flow.ScopedModuleDriver.prepare(ScopedModuleDriver.java:176) at
weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:93) at
weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:360) at weblogic.application.utils.StateMachineDriver.nextState
(StateMachineDriver.java:26) at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:56) at
weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:46) at weblogic.application.internal.BaseDeployment$1.next
(BaseDeployment.java:621) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26) at
weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.java:208) at weblogic.application.internal.DeploymentStateChecker.prepare
(DeploymentStateChecker.java:147) at weblogic.deploy.internal.targetserver.AppContainerInvoker.prepare(AppContainerInvoker.java:61) at
weblogic.deploy.internal.targetserver.operations.ActivateOperation.createAndPrepareContainer(ActivateOperation.java:189) at
weblogic.deploy.internal.targetserver.operations.ActivateOperation.doPrepare(ActivateOperation.java:87) at
weblogic.deploy.internal.targetserver.operations.AbstractOperation.prepare(AbstractOperation.java:217) at
weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentPrepare(DeploymentManager.java:718) at
weblogic.deploy.internal.targetserver.DeploymentManager.prepareDeploymentList(DeploymentManager.java:1185) at
weblogic.deploy.internal.targetserver.DeploymentManager.handlePrepare(DeploymentManager.java:247) at
原因:經過分析是web.xml配置的問題,有些servlet上面配置了'display-name',這個weblogic是不支持的。
解決:在web.xml中把'display-name'刪除掉,工程就可以在weblogic下成功發布。
在配置weblogic的數據源時,提示一下信息:
Home > Summary of Deployments > Summary of JDBC Data Sources:
Messages
An error occurred during activation of changes, please see the log for details.
weblogic.application.ModuleException:
weblogic.common.ResourceException: Could not create pool connection. The DBMS driver exception was: Io 異常: The Network Adapter could not establish the connection
解決:主要是我在配置數據源時沒有把Oracle的服務啟動造成的。
1、今天到客戶現場,輸入系統地址,發現登錄不上,后來查了下是DNS域名的問題。
原因:客戶的機器域名解析地址是:google的DNS,首選DNS服務器和備用DNS服務器分別設置為 8.8.8.8和8.8.4.4。由于我們是在本地局域網設置的域名,公網的域名解析器不識別,導致登錄不了系統。
解決:設置自動獲取DNS。

2、登錄系統后,打來相關的頁面,又出現頁面加載失敗
原因:主要是域名解析后,對相應的ip地址有限制。
解決:把域名、ip地址都加入為可信任站點,調低安全級別即可。

1、聲明式事務配置
* 配置SessionFactory
* 配置事務管理器
* 事務的傳播特性
* 那些類那些方法使用事務
2、編寫業務邏輯方法
* 繼承HibernateDaoSupport類,使用HibernateTemplate來持久化,HibernateTemplate是
Hibernate Session的輕量級封裝
* 默認情況下運行期異常才會回滾(包括繼承了RuntimeException子類),普通異常是不會滾的
* 編寫業務邏輯方法時,最好將異常一直向上拋出,在表示層(struts)處理
* 關于事務邊界的設置,通常設置到業務層,不要添加到Dao上
3、了解事務的幾種傳播特性
1. PROPAGATION_REQUIRED: 如果存在一個事務,則支持當前事務。如果沒有事務則開啟
2. PROPAGATION_SUPPORTS: 如果存在一個事務,支持當前事務。如果沒有事務,則非事務的執行
3. PROPAGATION_MANDATORY: 如果已經存在一個事務,支持當前事務。如果沒有一個活動的事務,則拋出異常。
4. PROPAGATION_REQUIRES_NEW: 總是開啟一個新的事務。如果一個事務已經存在,則將這個存在的事務掛起。
5. PROPAGATION_NOT_SUPPORTED: 總是非事務地執行,并掛起任何存在的事務。
6. PROPAGATION_NEVER: 總是非事務地執行,如果存在一個活動事務,則拋出異常
7. PROPAGATION_NESTED:如果一個活動的事務存在,則運行在一個嵌套的事務中. 如果沒有活動事務,
則按TransactionDefinition.PROPAGATION_REQUIRED 屬性執行
4、Spring事務的隔離級別
1. ISOLATION_DEFAULT: 這是一個PlatfromTransactionManager默認的隔離級別,使用數據庫默認的事務隔離級別.
另外四個與JDBC的隔離級別相對應
2. ISOLATION_READ_UNCOMMITTED: 這是事務最低的隔離級別,它充許令外一個事務可以看到這個事務未提交的數據。
這種隔離級別會產生臟讀,不可重復讀和幻像讀。
3. ISOLATION_READ_COMMITTED: 保證一個事務修改的數據提交后才能被另外一個事務讀取。另外一個事務不能讀取該事務未提交的數據
4. ISOLATION_REPEATABLE_READ: 這種事務隔離級別可以防止臟讀,不可重復讀。但是可能出現幻像讀。
它除了保證一個事務不能讀取另一個事務未提交的數據外,還保證了避免下面的情況產生(不可重復讀)。
5. ISOLATION_SERIALIZABLE 這是花費最高代價但是最可靠的事務隔離級別。事務被處理為順序執行。
除了防止臟讀,不可重復讀外,還避免了幻像讀。
對于出現的亂碼有2種解決方法:
1、在JS中,window.showModalDialog傳遞對象。
 function tool_uploadFile(clmNo,billType,maxFileNum,fileType,singleLimit,totalLimit) {//解決亂碼的問題,增加變量paramObj。10.06.01
 var paramObj = {
"clmNo" : clmNo,
"billType" : billType,
"maxFileNum" : maxFileNum,
"fileType" : fileType,
"singleLimit" : singleLimit,
"totalLimit" : totalLimit
};
var r = window.showModalDialog(global.WEB_APP_NAME+"/core/jsp/common/uploadFile.jsp",paramObj,"dialogHeight:610px;dialogWidth:530px;center:1;help: 0; status: 0;");
return r;
}
在uploadFile.jsp中,通過js獲得參數。
<script>
var paramObj = window.dialogArguments;
var clmNo = paramObj.clmNo;
var billType = paramObj.billType;
var maxFileNum = paramObj.maxFileNum;
var fileType = paramObj.fileType;
var singleLimit = paramObj.singleLimit;
var totalLimit = paramObj.totalLimit;
tool.loadApplet('<%=agentIp%>','<%=agentPort%>','<%=orgId%>',clmNo,billType,maxFileNum,fileType,singleLimit,totalLimit);
</script>
2、在JS中,window.showModalDialog通過?傳遞參數。
 function tool_uploadFile(clmNo,billType,maxFileNum,fileType,singleLimit,totalLimit) {
billType = encodeURIComponent(billType);
var r = window.showModalDialog(global.WEB_APP_NAME+"/core/jsp/common/uploadFile.jsp?clmNo="+clmNo+"&billType="+billType+"&maxFileNum="+maxFileNum+"&fileType="+fileType+"&singleLimit="+singleLimit+"&totalLimit="+totalLimit,"","dialogHeight:610px;dialogWidth:530px;center:1;help: 0; status: 0;");
return r;
}
在uploadFile.jsp中,通過java解析獲得參數。
String paramStr = request.getQueryString();
 if (paramStr == null || paramStr.equals("")) {
return;
}

HashMap<String, ArrayList<String>> parameter = new HashMap<String, ArrayList<String>>();
String[] paramArr = paramStr.split("&+");
String[] arr = null;
 for (int i = 0; i < paramArr.length; i++) {
arr = paramArr[i].split("=", 2);
ArrayList<String> lst = parameter.get(arr[0]);
 if (lst == null) {
lst = new ArrayList<String>();
parameter.put(arr[0], lst);
}
 if (arr.length < 2) {
lst.add("");
 } else {
lst.add(URLDecoder.decode(arr[1], "UTF-8"));
}
}
ArrayList<String> paramlst = parameter.get("billType");
String billType = paramlst.get(0);

以上兩種方法,對應用服務器設置的url編碼沒有關系。
還有一種方法,就是轉換成GB2312,不過此種方法跟服務器編碼設置還有關系,有時還會出現亂碼:
billType = new String(billType.getBytes(" ISO-8859-1"),"GB2312");
|