2008年08月14日
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.springframework.aop.support.AopUtils;
import org.springframework.util.MethodInvoker;
/**
*
* @author wangliang_gz@hotmail.com
* @version 1.1.0
*/
public class MethodUtils {
static public Object invokeMethod(Object obj, String methodName,
Object[] args) {
if (AopUtils.isJdkDynamicProxy(obj)) {
if (args == null) {
args = new Object[0];
}
int arguments = args.length;
Class parameterTypes[] = new Class[arguments];
for (int i = 0; i < arguments; i++) {
parameterTypes[i] = args[i].getClass();
}
Class _targetClass = AopUtils.getTargetClass(obj);
Class[] _targetInterfaces = _targetClass.getInterfaces();
Method method = null;
for (int i = 0; i < _targetInterfaces.length; i++) {
method = org.apache.commons.beanutils.MethodUtils
.getMatchingAccessibleMethod(_targetInterfaces[i], methodName,
parameterTypes);
if (method != null) {
break;
}
}
if (method == null) {
method = org.apache.commons.beanutils.MethodUtils
.getMatchingAccessibleMethod(_targetClass, methodName,
parameterTypes);
}
try {
// AopUtils.invokeJoinpointUsingReflection(obj, method, args);
return java.lang.reflect.Proxy.getInvocationHandler(obj)
.invoke(obj, method, args);
} catch (Throwable e) {
throw new RuntimeException(e);
}
} else {
try {
MethodInvoker invoker = new MethodInvoker();
invoker.setTargetObject(obj);
invoker.setArguments(args);
invoker.setTargetMethod(methodName);
invoker.prepare();
return invoker.invoke();
} catch (ClassNotFoundException e) {
e.printStackTrace();
throw new RuntimeException(e);
} catch (NoSuchMethodException e) {
e.printStackTrace();
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
e.printStackTrace();
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
}
Posted in
Springframework |
0
Comment »
2008年03月15日
f环境:WLsp3,hibernate3.1.3,spring1.2.7
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6458)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
Caused by: org.springframework.transaction.CannotCreateTransactionException:
Could not open Hibernate Session for transaction; nested exception is
org.hibernate.exception.GenericJDBCException: Cannot open connection
at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:548)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.
getTransaction(AbstractPlatformTransactionManager.java:282)
at org.springframework.transaction.interceptor.TransactionAspectSupport.
createTransactionIfNecessary(TransactionAspectSupport.java:225)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
at org.springframework.aop.framework.
Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:643)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.tapestry.listener.ListenerMap.invokeTargetMethod(ListenerMap.java:257)
... 30 more
Caused by: org.hibernate.exception.GenericJDBCException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:91)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:79)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:307)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:109)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:134)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1236)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:515)
... 43 more
Caused by: weblogic.jdbc.extensions.PoolLimitSQLException: weblogic.common.resourcepool.ResourceLimitException:
No resources currently available in pool cp_ffp to allocate to applications, please increase the size of the pool and retry..
at weblogic.jdbc.common.internal.JDBCUtil.wrapAndThrowResourceException(JDBCUtil.java:203)
at weblogic.jdbc.pool.Driver.connect(Driver.java:161)
at weblogic.jdbc.jts.Driver.getNonTxConnection(Driver.java:507)
at weblogic.jdbc.jts.Driver.connect(Driver.java:139)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:305)
at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider
.getConnection(LocalDataSourceConnectionProvider.java:80)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:304)
... 48 more
<2008-3-11 上午10时30分42秒 GMT> <Warning> <JDBC> <BEA-001074> <A JDBC pool connection leak was detected.
A connection leak occurs when a connection obtained from the pool was not closed explicitly by calling close()
and then was disposed by the garbage collector and returned to the connection pool. The following stack
trace at create shows where the leaked connection was created.
[Null exception passed, creating stack trace for offending caller]
at weblogic.utils.StackTraceUtils.throwable2StackTrace(StackTraceUtils.java:28)
at weblogic.jdbc.wrapper.PoolConnection.finalizeInternal(PoolConnection.java:84)
at weblogic.jdbc.wrapper.PoolConnection_com_sybase_jdbc2_jdbc_SybConnection.finalize(Unknown Source)
at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
at java.lang.ref.Finalizer.runFinalizer(Unknown Source)
at java.lang.ref.Finalizer.access$100(Unknown Source)
at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)
http://forums.bea.com/thread.jspa?threadID=200035670&start=105
据查此错误是由于连接池内存泄露导致,更换到spring2.0.8错误消失
Posted in
Springframework |
0
Comment »