小编mas*_*ime的帖子

如何从Web容器外部查找JNDI数据源?

我有以下环境设置:

  • Java 1.5
  • Sun Application Server 8.2
  • Oracle 10 XE
  • Struts 2
  • 过冬

我很想知道如何编写可以引用应用程序服务器提供的JNDI数据源的Java客户端(即Web应用程序之外)的代码.

Sun Application Server的端口都是默认端口.在服务器配置中有一个名为jdbc/xxxx的JNDI数据源,但我注意到Web应用程序的Hibernate配置使用名称java:comp/env/jdbc/xxxx.

到目前为止,我见过的大多数例子都涉及代码

Context ctx = new InitialContext();
ctx.lookup("jdbc/xxxx");
Run Code Online (Sandbox Code Playgroud)

但似乎我要么使用错误的JNDI名称,要么我需要配置jndi.properties或其他配置文件来正确指向监听器?我有来自Sun Application Server的appserv-rt.jar,里面有一个jndi.properties,但似乎没什么帮助.

这里有一个类似的问题,但它没有给出任何代码/指的是让iBatis自动获取JNDI数据源:从Web容器外部访问数据源(通过JNDI)

java jndi datasource jdbc

19
推荐指数
1
解决办法
6万
查看次数

如何将AOP建议应用于Spring中的ConstraintValidator <A,T>?

我试图Validator在Spring 3.0.x下编写自己的(根据JSR-303规范).

我用isValid(Serializable, CosntraintValidatorContext)方法注释了方法@Transactional,但似乎事务建议没有应用于此方法 - 当isValid()调用方法时,调用sessionFactory.getCurrentSession()创建异常:

org.hibernate.HibernateException:没有Hibernate会话绑定到线程,配置不允许在这里创建非事务性的

我有一个@Autowired sessionFactoryValidator没有问题的情况下注入的同一个bean.我目前的解决方法是使用openSession()而不是getCurrentSession(),但这涉及手动事务管理,我宁愿避免.

在我的验证器bean的构造函数中执行堆栈跟踪,似乎我的Validatorbean是通过调用来构造的o.s.b.f.s.AbstractAutowireCapableBeanFactory.createBean().我认为这意味着工厂能够填充@Autowired我的字段Validator,但似乎它没有应用任何交易建议?

提前感谢您对此事的任何帮助.

编辑:如果有任何帮助,我已经包含了一个create new Exception()在构造函数中记录的部分stacktrace(via ):

at com.mydomain.validators.UniqueValidator.<init>(UniqueValidator.java:49) ~[UniqueValidator.class:na]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [na:1.6.0_20]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) [na:1.6.0_20]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) [na:1.6.0_20]
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) [na:1.6.0_20]
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:126) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:74) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:958) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:911) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:286) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] …
Run Code Online (Sandbox Code Playgroud)

java spring spring-aop hibernate-validator bean-validation

5
推荐指数
1
解决办法
806
查看次数