3

I want to create a lightweight portal using the Java specification. I want to be able to deploy the same portal project in different application servers (in this case WebSphere, Tomcat and JBoss).

I've checked products like Liferay, but I want to create my own framework and interface, and just embed Java Portlets, instead of using Liferay's full framework and interface.

With IBM WebSphere (not WebSphere Portal), I followed the following guide:

"Exploiting the WebSphere Application Server V6.1 portlet container: Part 1: Introducing the portlet container"

I managed to create a simple JSP embedding two simple portlets. Each of the portlet projects are product agnostic (contrary to Liferay or Apache Pluto projects, which include product-specific configuration files). This is what I want to do.

The problem is that, if I try to run those same projects in Tomcat or JBoss, they are not working. As I said before, the projects doesn't have any IBM or WebSphere specific configuration files.

So, my questions are:

  1. Is there a way to use Java Portlet projects without having to add vendor-specific files or code, and add them to any application server?
  2. Where can I find the guidelines to create application-server-agnostic portlets and portals?
  3. Is it the case that WebSphere has a portlet container but the other servers don't?
4

2 回答 2

3
  1. 有没有一种方法可以使用 Java Portlet 项目而无需添加特定于供应商的文件或代码,并将它们添加到任何应用程序服务器?

不。tomcat、jboss 等是 Servlet 容器,要运行 portlet,您需要 Portlet Container,它实际上是由 Liferay 等门户提供的。

  1. 我在哪里可以找到创建与应用程序服务器无关的 portlet 和门户的指南?

JSR 规范为您提供了指导方针。这是一个很好的链接。我再次重复 Portlet,就像 Servlet 需要 Servlet Container,它们需要 Portlet Container。但是,当您已经拥有全功能的 portlet 容器(如 Liferay、IBM 等)时,这将是重新发明轮子,这些容器是根据具有许多附加功能的规范创建的。Liferay 是一个可在大多数应用程序服务器上运行的 portlet 容器,如果您在不使用任何供应商特定 API 的情况下创建了一个 portlet,那么它应该可以在 Liferay、IBM 等所有不同的门户中运行,只需添加一些配置文件提供额外的用户体验和功能。

  1. 是不是 WebSphere 有一个 portlet 容器而其他服务器没有?

是的。:-) 至少您链接到的文章清楚地提到它有一个 portlet 容器:

本系列文章研究了 IBM WebSphere Application Server V6.1 中可用的 JSR 168 portlet 容器,并将其与 WebSphere Portal 的使用区分开来。

希望这对您有所帮助并帮助您。

于 2015-02-05T10:02:36.310 回答
0

WebSphere 提供了开箱即用的Portlet 容器,因为 Java EE 规范不要求这样做,其他服务器可能需要添加第三方容器和额外的配置来为 Portlet 提供服务。对于基本的 portlet,您不需要任何供应商特定的代码或描述符来在 WebSphere 中运行它们,就像您测试的那样。

您还可以查看 WebSphere Liberty,它是一个轻量级服务器,也支持 portlet 容器,但没有完整的 WebSphere - Developing portlet in Liberty

于 2015-02-05T11:03:33.917 回答