2

我正在尝试将 Spring 容器与我的自定义 AutoLogin 过滤器集成,但我已经花了两天时间,它还没有工作......我现在真的很困惑......

我的自定义 AutoLogin 需要对与 Liferay 不同的外部数据库进行身份验证,所以我假装使用我的服务和在 Spring 中配置的 Daos 来存档它。

我的 web.xml 有这样的配置:

<context-param>
     <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/applicationContext.xml</param-value>
</context-param>


 <context-param>
    <param-name>portalContextConfigLocation</param-name>

    <param-value>
        /WEB-INF/spring/applicationContext.xml
    </param-value>
</context-param>

 <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<listener>
    <listener-class>com.liferay.portal.kernel.spring.context.PortletContextLoaderListener</listener-class>

但我真的不确定我需要两个听众还是只需要其中一个。

当钩子初始化时,在类路径中找不到 Spring 类,因此我将所需的库添加到 Tomcat/lib 目录。Liferay 有自己的类加载器,似乎它无法看到 Liferay 类加载器的钩子......所以在类路径中找不到类。

但最大的问题是我无法将 Hibernate-core jar 添加到服务器类路径,因为它在服务器启动时会导致 CastingException。

我做过的另一个测试是将 Hibernate jar 添加到我的 Hook 的 WEB-INF/lib 文件夹中,但这就像 Hook 类加载器中没有加载任何 Jar 一样......所以它也不起作用。

请,任何帮助将不胜感激...我希望是配置问题...虽然我一直在玩移动罐子,它应该更容易,不是吗?

非常感谢您!

伊万

4

1 回答 1

3

我终于解决了我的 Spring 集成...仅针对有相同问题的人,这就是我所做的:

  1. 使用 Liferay 中所有必需的库更新文件“liferay-plugin-package.properties”中的属性“portal-dependency-jars”:

    portal-dependency-jars=\ commons-logging.jar,\ hibernate3.jar,\ log4j-extras.jar,\ log4j.jar,\ spring-aop.jar,\ spring-asm.jar,\ spring-aspects.jar ,\ spring-beans.jar,\ spring-context-support.jar,\ spring-context.jar,\ spring-core.jar,\ spring-expression.jar,\ spring-jdbc.jar,\ spring-jms。 jar,\ spring-orm.jar,\ spring-oxm.jar,\ spring-transaction.jar,\ spring-web-portlet.jar,\ spring-web-servlet.jar,\ spring-web-struts.jar, \spring-web.jar,\aopalliance.jar,\dom4j.jar,\slf4j-api.jar,\commons-beanutils.jar,\commons-collections.jar,\commons-lang.jar,\concurrent.jar, \javassist.jar

  2. 让 web.xml 没有任何 Spring Listener。我终于无法从侦听器中加载 Spring 上下文...

  3. 使用 ClassPathXmlApplicationContext 类在你的钩子中加载 Spring 容器。

使用此配置,您无需将任何 Jar 复制到 tomcat/lib 目录中。

我希望这可以帮助某人!

伊万丰塔纳尔斯

于 2012-10-29T10:12:23.137 回答