Liferay 포럼에서이 문제에 대한 기쁨을 느끼지 못하며이 프로젝트에 대한 시간이 촉박합니다. 이것은 스프링에 대한 지식이 부족하기 때문에 발생할 수 있습니다.Liferay에서 작동하는 JNDI JDBC 리소스를 가져올 수 없습니다.
server.xml에 정의 된 JNDI 전역 리소스와 Tomcat 7/conf 폴더의 context.xml에있는 리소스 링크가 있습니다. 서버가 시작될 때 유효성 검사 쿼리가 실행되는 것을 볼 수 있기 때문에 JNDI 리소스가로드되고 있음을 알고 있습니다. 여태까지는 그런대로 잘됐다.
다른 포틀릿에 서비스를 제공하는 포틀릿 만 있습니다. 이 포틀릿에는 JDBC 리소스를 가리키는 세션 팩토리가있는 hibernate.cfg.xml이 있습니다 (이것이 필요한지 아닌지는 알 수 없음).
<bean id="liferayHibernateSessionFactory" class="com.liferay.portal.spring.hibernate.PortletHibernateConfiguration" >
<property name="dataSource" ref="MyJDBCResource" />
</bean>
<bean id="MyJDBCResource" class="org.springframework.jndi.JndiObjectFactoryBean" >
<property name="jndiName" value="java:comp/env/jdbc/MyJDBCResource" />
</bean>
배치에 따라 그 서비스 포틀릿에 콩 오류 문제를 해결 내선-spring.xml 위의 추가 : 나는 또한 다음을 가지고있는 서비스 포틀릿에서 EXT-spring.xml 파일이 있습니다. 해당 서비스 빌더 내장 포틀릿에서 서비스 항아리가 생성되었고 Tomcat_Home/lib/ext 폴더에 해당 서비스 항아리가 저장되어 포틀릿에서 제공하는 서비스를 사용할 수있게되었습니다. 여태까지는 그런대로 잘됐다. 그러나 JNDI 참조로 다른 포틀릿에서 제공하는 서비스를 호출하는 포틀릿 메소드를 호출 할 때 "사용자에게 권한이 없거나 객체를 찾을 수 없음"오류가 발생합니다. 확실히 개체를 찾을 수 없습니다. 쿼리가 실행되면 JNDI 리소스 항목에 지정된 JDBC 연결에 대한 활동이 전혀없고 연결 속성을 드릴 다운하는 동안 사용중인 HSQLDB 드라이버 만 볼 수 있습니다. 내 글로벌 리소스 JNDI 항목에 지정된 MSSQL 드라이버를 사용해야합니다.
그래서 내가 뭘 잘못 했니? 이 서비스를 호출하는 포틀릿에 구성 항목을 추가해야합니까?
이렇게 간단 해 보입니다. JNDI/JDBC 리소스 사용에 대한 지침을 제공하는 많은 게시물을 읽으면 올바르게 따라 갔던 것 같습니다. 내가 놓친 LR 6.1.1과 Tomcat 7에서 JNDI/JDBC 자원을 사용하는 데 어떤 트릭이 있습니까?
감사합니다. (정말로 답변을 원합니다!) 당신은 Spring에서 JNDI 리소스 조회에 대한 다른 접근을 시도 할 수도
<bean id="MyJDBCResource" class="org.springframework.jndi.JndiObjectFactoryBean" >
<property name="jndiName" value="jdbc/MyJDBCResource" />
</bean>
: 먼저