在Liferay論壇上對這個問題沒有喜悅,並且時鐘在這個項目上正在運行。這可能是由於我缺乏對Spring的知識。似乎無法獲得在Liferay中工作的JNDI JDBC資源
我有一個在server.xml中定義的JNDI全局資源和我的Tomcat 7/conf文件夾中的context.xml中的資源鏈接。我知道JNDI資源正在加載,因爲我看到驗證查詢在服務器啓動時運行。到現在爲止還挺好。
我有一個portlet只爲其他portlet提供服務。在那個portlet中,我有一個hibernate.cfg.xml,它有一個會話工廠,它也指向JDBC資源(不知道這是否需要)。我也有具有以下服務門戶的EXT-spring.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>
添加在EXT-spring.xml上述固定的問題與在部署該服務的portlet豆錯誤。在該服務構建器構建的portlet中,創建了一個服務jar,並將該服務jar放入Tomcat_Home/lib/ext文件夾中,以便我可以在portlet中使用portlet提供的服務。到現在爲止還挺好。但是,當我調用通過JNDI引用調用另一個portlet提供的服務的portlet方法時,出現「用戶缺少權限或對象未找到」錯誤。確實是找不到對象。當查詢運行時,我在JNDI資源條目指定的JDBC連接上看到完全沒有任何活動,並且在連接屬性上向下鑽取,我只看到正在使用的HSQLDB驅動程序。它應該正在使用我的全局資源JNDI條目中指定的MSSQL驅動程序據我瞭解。
那麼我做錯了什麼?我是否需要在Portlet中添加一些配置條目,調用的服務?
這看起來很簡單。在閱讀許多關於使用JNDI/JDBC資源的指導時,我似乎正確地遵循了它們。在LR 6.1.1和Tomcat 7中使用我錯過的JNDI/JDBC資源有一些技巧嗎?
謝謝(真的希望得到一些答案!)。