Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在liferay钩子中将自定义类导入JSP_Java_Maven_Liferay_Liferay 6 - Fatal编程技术网

Java 在liferay钩子中将自定义类导入JSP

Java 在liferay钩子中将自定义类导入JSP,java,maven,liferay,liferay-6,Java,Maven,Liferay,Liferay 6,我使用Hook maven原型创建了一个liferay钩子插件,并覆盖了/html/common/themes/top_js-ext.jspf。在jsp中,我需要使用自定义功能,我在一个单独的jar中。jar是通过maven依赖项包含的,项目可以很好地编译,但是当我运行jsp时,门户找不到导入的类 我怎样才能解决这个问题?我是否应该手动将自定义jar包含在liferay的lib目录中 如果我理解正确,JSP是在钩子插件的上下文之外执行的,因此,定制类不可用。是否有一种方法可以使用maven构建插

我使用Hook maven原型创建了一个liferay钩子插件,并覆盖了
/html/common/themes/top_js-ext.jspf
。在jsp中,我需要使用自定义功能,我在一个单独的jar中。jar是通过maven依赖项包含的,项目可以很好地编译,但是当我运行jsp时,门户找不到导入的类

我怎样才能解决这个问题?我是否应该手动将自定义jar包含在liferay的lib目录中


如果我理解正确,JSP是在钩子插件的上下文之外执行的,因此,定制类不可用。是否有一种方法可以使用maven构建插件,以便门户找到我的自定义jar,而不必手动将它们移动到门户的类路径?

获取java类文件的jar,并将其放置在root/web inf/lib中,然后重新启动它。

在门户的类加载器中执行JSP,即使它是通过一个单独的Web应用程序(钩子)部署的。因此,您可以选择

  • 将自定义代码添加到Liferay,例如根上下文(正如NivasKulukuri提到的)
  • 将自定义代码添加到全局类路径
  • 通过使用类加载桥访问自定义代码(例如,阅读关于PortletClassInvoker的文章)。Liferay Servicebuilder在其类加载代理(以Clp结尾的类名)中利用这些方法跨Web应用程序调用
  • 考虑另一种实现,例如,只需将所需的JS代码添加到自定义主题中。如果您有许多主题需要进行此更改,请考虑引入一个(我推荐这种方式作为最佳可维护方式)

类加载桥的缺点是,使用它们感觉像是在反射中编程——您不想常规地这样做。尤其是您不希望常规维护的内容。

有多种选项可用于在运行时使用自定义JAR。首先,你可以考虑把它们放进你的:

[…]将JAR文件放入自定义JSP文件夹的WEB-INF/lib文件夹[…]


另一种方法是将jar文件放入ext lib/portal或ext lib/global目录。完成后,您的tomcat的所有webapps(如果是ext-lib/global)或门户(名为tomcat/webapps/ROOT)都可以使用这些应用程序。

我正在寻找更自动化的应用程序,这正是我试图避免的,由于它增加了部署过程的复杂性,Ext插件似乎是最干净的方法。谢谢你的反馈