2014-09-02 61 views
1

我今天花了几个小时试图将在IBM Portal服务器上正常运行的jsr168 portlet转换为一个在liferay上运行的Portlet,因为我想在我的本地服务器上使用liferay作为我的开发环境。将Portlet部署到liferay时出错 - >文件“/WEB-INF/tld/std-portlet.tld”找不到

问题1:

我得到一个STD-portlet.tld没有发现,当我部署我的portlet如下错误...

10:57:49,218 ERROR [ajp-bio-8009-exec-91][render_portlet_jsp:132] null 
org.apache.jasper.JasperException: /_StockOnHandPortlet/jsp/html/StockOnHandPortletView.jsp (line: 2, column: 61) File "/WEB-INF/tld/std-portlet.tld" not found 

我已经得到了最新版的eclipse并从Eclipse Market Place安装liferay sdk插件。然后,我将liferay服务器运行时添加到了我认为可能已解决此问题的Portlet,但它没有。

enter image description here

有人可以给我就如何解决这一PLS一些建议吗?

问题2:

当从IBM门户服务器移动到Liferay我必须包括一些在我的WEB-INF lib目录罐子,我并没有像部署到IBM门户服务器时要包括上面的截图中的apache commons libs和jax-rpc jar。

这听起来没错,我必须这样做吗?如果是这样,看起来我可能需要为不同的门户服务器创建不同的构建文件。你同意吗?

感谢...

(PS我在Eclipse项目仍然在WebSphere方面。我asssumed,我并不需要改变?)

+0

你能告诉我们你的文件夹结构中的WEB-INF目录下有什么吗?和'web.xml'? – 2014-09-02 11:54:57

回答

1

我想这std-portlet.tld指的是什么 - 在Liferay中 - 是<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>(请注意,我在此命名JSR-286,例如portlet 2.0 taglib)。我不确定std-portlet是否是Portlet 1.0的标准名称,因为自从2.0版本发布以来, 2008年,我很久没用1.0了。

Liferay会自动假定您的插件需要访问标准portlet taglib并使其可用于您的应用程序 - 但仅限于上述标准名称。正如我所说的,我不确定您是使用portlet-spec 1.0的标准方式还是IBM特定的方式。 (我对两者都没有经验 - 很高兴迟到了只能使用2.0)

所有门户(和应用程序服务器)都使不同的代码可用于全局类路径上的应用程序 - 或在部署期间。而且您似乎发现了IBM提供的一些组件,但Liferay没有提供这些组件。如果将它们添加到您的Web应用程序(WEB-INF/lib)或全局类路径(tomcat/libtomcat/lib/ext)中,则仍然是您自己的选择。很可能你会因瞄准不同的环境而受益,例如在您的项目中使用Liferay和IBM特定的部署描述符。一个例子是liferay-display.xml,它允许你指定你的定制portlet出现的类别。

+0

谢谢。听起来好像事情在实现中的差异变得有点棘手。罐子的差异是可以的。正如你所提到的,我可以将它们添加到tomcat库,但是我必须调查标签库的内容,并评估如果使用liferay作为我的开发环境是可行的。 – Richie 2014-09-02 12:41:03

+0

你甚至可以使用Liferay作为你的产品环境;) – 2014-09-02 12:44:46

+0

Lol。不幸的是,我的公司不断受到IBM销售人员的困扰。 – Richie 2014-09-02 12:49:33

相关问题