Org.hibernate.JAVA

Программисты JAVA общаются здесь
Anonymous
Org.hibernate.

Сообщение Anonymous »

Я разрабатываю веб-приложение с Angularjs в качестве фронтального и пружины+спящего в качестве уровня обслуживания. Сервисный уровень имеет набор API REST, которые используются AngularJS. Передняя часть приложения не имеет серьезных проблем. Но на уровне обслуживания я сталкиваюсь с некоторыми проблемами параллелизма. Для некоторых сценариев я должен сделать параллельные асихронные вызовы с теми же API остальными из того же сеанса HTTP. Когда я делаю это, бывают случаи, когда я получаю вышеуказанную ошибку. На самом деле, ошибка продолжает меняться каждый раз. Иногда я также получаю NullPointerException на операции Query.list (). Иногда я получаю исключение TransactionResourcealReadyClede. Различные конфигурации и фрагменты кода прикреплены ниже.
contextConfigLocation
WEB-INF/config/fs-cxf-serverContext.xml,WEB-INF/config/fs-spring-jpa-config.xml,WEB-INF/config/security-beans.xml



org.springframework.web.context.request.RequestContextListener


org.springframework.web.context.ContextLoaderListener



CorsFilter
org.apache.catalina.filters.CorsFilter

cors.allowed.origins
*


cors.allowed.headers
Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,Access-Control-Allow-Origin


cors.exposed.headers
Access-Control-Allow-Origin


cors.allowed.methods
GET, POST, PUT, DELETE, OPTIONS, HEAD



CorsFilter
/*



springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy


springSecurityFilterChain
/*



Servlet to Initialize and shutdown the Scheduler
QuartzInitializer
org.quartz.ee.servlet.QuartzInitializerServlet

config-file
quartz.properties


shutdown-on-unload
true


start-scheduler-on-load
true

2


CXFServlet
org.apache.cxf.transport.servlet.CXFServlet
1



CXFServlet
/services/*



jdbc/foodsafetyDS
javax.sql.DataSource
Container
Shareable

< /code>

< /p>

jpa configuration < /p>



















< /code>

< /p>

Hibernate.cfg.xml



com.mysql.jdbc.Driver
org.hibernate.dialect.MySQLDialect
java:comp/env/jdbc/foodsafetyDS
update
false


< /code>

Я создал простой контроллер REST с помощью CXF. Конечная точка отдыха, как показано ниже < /p>

@Path("/units")
@Produces(MediaType.APPLICATION_JSON)
public interface UnitService extends Serializable {

@GET
@Path("/getGraphData/{type}")
@Produces(MediaType.APPLICATION_JSON)
public UnitServiceBean getGraphData(@PathParam("type") String type)
throws FoodSafetyException;
< /code>

} < /p>

Реализация контроллера, как показано ниже < /p>

xxxserviceimpl.java

@Service("unit")
@Transactional
public class xxxServiceImpl implements xxxService {

private static final long serialVersionUID = 1L;

@Autowired
xxxDelegate xxxDelegate;

@Override
public UnitServiceBean getGraphData(String type) throws FoodSafetyException {
UnitServiceBean bean = new UnitServiceBean();

List data = unitDelegate.getGraphData(type);
....
....
return bean;
}
< /code>

делегат вызывает DAO. (Мы не представили бизнес -объект на данный момент). Реализация DAO, как показано ниже < /p>

@Component
public class UnitDAOImpl extends FoodSafetyDAO implements UnitDAO {
@Override
public List getGraphData(String type) {
List data = new ArrayList();
Map readings = new HashMap();

SimpleDateFormat df = CommonConstants.TIME_FORMATTER;

// Get all the Units
Query query = getSession().getNamedQuery(
QueryConstants.FIND_UNITS_BY_TYPE);
query.setParameter(QueryConstants.TYPE, type);
List units = (List) query.list();
if (units != null && units.size() != 0) {
.....
.....

for (UnitEntity unit : units) {
Calendar cal1 = Calendar.getInstance();
cal1.add(Calendar.DAY_OF_YEAR, -1);
query = getSession().getNamedQuery(
QueryConstants.FIND_READING_BY_UNIT_TIME).setLong(
QueryConstants.UNIT_ID, unit.getUnitId());

List rr = query.list();
...
...
}
}

return data;
}
< /code>

Теперь, когда я звоню в службу отдыха "getGraphData", используя почтальон и т. Д. Но когда я моделирую одновременный вызов этой службе REST, используя следующую ошибку < /p>

Caused by: org.hibernate.AssertionFailure: p o s s i b l e n o n - t h r e a d s a f e a c c e s s t o t h e s e s s i o n < b r / > a t o r g . h i b e r n a t e . e n g i n e . i n t e r n a l . T w o P h a s e L o a d . i n i t i a l i z e E n t i t y ( T w o P h a s e L o a d . j a v a : 1 3 0 ) < b r / > a t o r g . h i b e r n a t e . l o a d e r . L o a d e r . i n i t i a l i z e E n t i t i e s A n d C o l l e c t i o n s ( L o a d e r . j a v a : 1 1 0 8 ) < b r / > a t o r g . h i b e r n a t e . l o a d e r . L o a d e r . p r o c e s s R e s u l t S e t ( L o a d e r . j a v a : 9 6 4 ) < b r / > a t o r g . h i b e r n a t e . l o a d e r . L o a d e r . d o Q u e r y ( L o a d e r . j a v a : 9 1 1 ) < b r / > a t o r g . h i b e r n a t e . l o a d e r . L o a d e r . d o Q u e r y A n d I n i t i a l i z e N o n L a z y C o l l e c t i o n s ( L o a d e r . j a v a : 3 4 2 ) < b r / > a t o r g . h i b e r n a t e . l o a d e r . L o a d e r . d o L i s t ( L o a d e r . j a v a : 2 5 2 6 ) < b r / > a t o r g . h i b e r n a t e . l o a d e r . L o a d e r . d o L i s t ( L o a d e r . j a v a : 2 5 1 2 ) < b r / > a t o r g . h i b e r n a t e . l o a d e r . L o a d e r . l i s t I g n o r e Q u e r y C a c h e ( L o a d e r . j a v a : 2 3 4 2 ) < b r / > a t o r g . h i b e r n a t e . l o a d e r . L o a d e r . l i s t ( L o a d e r . j a v a : 2 3 3 7 ) < b r / > a t o r g . h i b e r n a t e . l o a d e r . h q l . Q u e r y L o a d e r . l i s t ( Q u e r y L o a d e r . j a v a : 4 9 5 ) < b r / > a t o r g . h i b e r n a t e . h q l . i n t e r n a l . a s t . Q u e r y T r a n s l a t o r I m p l . l i s t ( Q u e r y T r a n s l a t o r I m p l . j a v a : 3 5 6 ) < b r / > a t o r g . h i b e r n a t e . e n g i n e . q u e r y . s p i . H Q L Q u e r y P l a n . p e r f o r m L i s t ( H Q L Q u e r y P l a n . j a v a : 1 9 5 ) < b r / > a t o r g . h i b e r n a t e . i n t e r n a l . S e s s i o n I m p l . l i s t ( S e s s i o n I m p l . j a v a : 1 2 6 9 ) < b r / > a t o r g . h i b e r n a t e . i n t e r n a l . Q u e r y I m p l . l i s t ( Q u e r y I m p l . j a v a : 1 0 1 ) < b r / > a t c o m . c t s . f o o d S a f e t y . m o d e l . d a o . i m p l . U n i t D A O I m p l . g e t G r a p h D a t a ( U n i t D A O I m p l . j a v a : 2 5 5 ) < b r / > a t s u n . r e f l e c t . N a t i v e M e t h o d A c c e s s o r I m p l . i n v o k e 0 ( N a t i v e M e t h o d ) < b r / > a t s u n . r e f l e c t . N a t i v e M e t h o d A c c e s s o r I m p l . i n v o k e ( N a t i v e M e t h o d A c c e s s o r I m p l . j a v a : 3 9 ) < b r / > a t s u n . r e f l e c t . D e l e g a t i n g M e t h o d A c c e s s o r I m p l . i n v o k e ( D e l e g a t i n g M e t h o d A c c e s s o r I m p l . j a v a : 2 5 ) < b r / > a t j a v a . l a n g . r e f l e c t . M e t h o d . i n v o k e ( M e t h o d . j a v a : 5 9 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . a o p . s u p p o r t . A o p U t i l s . i n v o k e J o i n p o i n t U s i n g R e f l e c t i o n ( A o p U t i l s . j a v a : 3 1 7 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . a o p . f r a m e w o r k . R e f l e c t i v e M e t h o d I n v o c a t i o n . i n v o k e J o i n p o i n t ( R e f l e c t i v e M e t h o d I n v o c a t i o n . j a v a : 1 8 3 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . a o p . f r a m e w o r k . R e f l e c t i v e M e t h o d I n v o c a t i o n . p r o c e e d ( R e f l e c t i v e M e t h o d I n v o c a t i o n . j a v a : 1 5 0 ) < b r / > a t o r g . s p r i n g f r a m e w o r k . a o p . f r a m e w o r k . a d a p t e r . M e thodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:51)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.aspectj.AspectJAfterAdvice.invoke(AspectJAfterAdvice.java:42)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at com.sun.proxy.$Proxy51.getGraphData(Unknown Source)
at com.cts.foodSafety.delegate.UnitDelegate.getGraphData(UnitDelegate.java:39)
at com.cts.foodSafety.delegate.UnitDelegate$$FastClassByCGLIB$$aac35d0d.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:698)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:51)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.aspectj.AspectJAfterAdvice.invoke(AspectJAfterAdvice.java:42)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631)
at com.cts.foodSafety.delegate.UnitDelegate$$EnhancerByCGLIB$$75af66.getGraphData()
at com.cts.foodSafety.service.impl.UnitServiceImpl.getGraphData(UnitServiceImpl.java:108)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:51)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.aspectj.AspectJAfterAdvice.invoke(AspectJAfterAdvice.java:42)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJAfterThrowingAdvice.java:55)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at com.sun.proxy.$Proxy72.getGraphData(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:180)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
< /code>

Клиент, который я использовал для выполнения одновременного запроса, как ниже < /p>

public class RestClient implements Runnable{

private String i;

public RestClient(String x) {
i=x;
}
public static void main(String[] args) {

for(int i =1;i

Есть указатели /предложения? Я прошел много материалов на сессиях и управлении транзакциями в Spring+Hibernate. Но я не могу понять эту проблему.

Подробнее здесь: https://stackoverflow.com/questions/352 ... he-session

Вернуться в «JAVA»