找做网站的客户,彩页设计软件,手机网站建设品牌好,新建网站后域名跳转到别的网站了jboss 配置上下文路径Portlet概述 本教程将向您展示如何创建和部署简单的Portlet。 Portlet是基于Java技术的Web组件#xff0c;可以处理请求并生成动态内容。 Portlet不是自治实体#xff0c;但是由Portlet容器管理#xff0c;Portlet容器为Portlet执行提供了必要的运行时… jboss 配置上下文路径 Portlet概述 本教程将向您展示如何创建和部署简单的Portlet。 Portlet是基于Java技术的Web组件可以处理请求并生成动态内容。 Portlet不是自治实体但是由Portlet容器管理Portlet容器为Portlet执行提供了必要的运行时环境。 应该注意的是单个门户可以托管多个portlet容器。 Portlet的生命周期由容器控制这对于将请求委派给适当的已部署Portlet也很重要。 Portlet和Servlet紧密相关Portlet规范借鉴了先前定义的Servlet规范。 实际上Portlet应用程序本质上是Web应用程序的扩展并且Portlet和Servlet可以组合在同一Web应用程序中。 Portlet可以具有各种模式这些模式可以由用户通过门户网站提供的导航控制器通常是按钮进行控制。 共有三种标准模式尽管门户供应商可以提供其他自定义模式作为专有扩展 视图 这是Portlet的常规显示也是最常用的一种。 编辑 在此模式下用户可以配置提供自己偏好的portlet有助于实现个性化。 帮助 顾名思义此模式用于向用户提供帮助。 安装JBoss Portal 在本教程中我们选择使用Red Hat提供的门户实现JBoss Portal 这也为我们提供了著名的JBoss应用服务器。 正如您将在官方页面上看到的那样所有开发工作现在都针对GateIn 这是eXo和JBoss门户之间的协作。 但是JBoss门户肯定非常健壮和稳定与以下两个原因相比我更喜欢GateIn 外观更好的界面和更好的Portlet呈现 简化管理配置和管理 无论如何所有门户中的安装/部署过程都应该相同。 可以在这里下载JBoss门户它有两种形式 JBoss门户二进制文件 仅JBoss门户组件捆绑为服务档案SAR文件。 JBoss Portal JBoss AS 4.2.3 已经部署了门户的典型JBoss应用服务器。 由于很可能已经部署了JBoss AS因此我选择了第一个选项因此将门户二进制文件用作外部应用程序。 下载ZIP文件后解压缩其内容。 可以在其中找到文件夹“ jboss-portal.sar”您必须将其复制到“ / server / default / deploy /”目录中。 此步骤之后必须设置门户网站数据库的数据源。 在“ jboss-portal-2.7.2 / setup”文件夹中对于所有常用的DBMS可以找到许多数据源声明。 出于开发目的和快速入门 HSQLDB是必经之路。 因此将文件“ portal-hsqldb-ds.xml”复制到“ / server / default / deploy /”目录中以设置数据源。 现在我们已经准备好启动JBoss服务器并在其启动并运行后您将能够通过以下URL访问门户 http// localhost8080 / portal / 您应该能够看到以下屏幕 注意JBoss门户在部署期间会加载很多类由于永久生成空间有限您可能会遇到OutOfMemory错误。 如果是这种情况您将发现服务器没有响应并且将出现以下错误消息 “ java.lang.OutOfMemoryErrorPermGen空间” 要解决此问题请编辑启动脚本对于Windows为run.bat对于Linux为run.conf并在JVM参数中添加以下参数 -XXMaxPermSize 512m 重新启动服务器以应用更改。 创建portlet项目 让我们继续以名称“ HelloWorldPortletProject”创建一个新的Eclipse项目。 为了开始构建Portlet我们需要访问Portlet API。 必要的库可以在Portlet规范站点上找到 。 下载“ portlet.jar”文件并将其添加到项目的类路径中。 另外请确保将“ Portlet API Javadocs”页面添加为书签。 我们将创建的类将直接扩展GenericPortlet类该类为Portlet接口提供默认实现。 唯一的功能是在重写的render方法内提供的 此方法由portlet容器调用以允许portlet根据其当前状态生成响应的内容。 该方法的参数是RenderRequest对象和RenderResponse对象 RenderRequest对象表示发送到Portlet以处理渲染的请求 RenderResponse对象定义一个对象以帮助Portlet向门户发送响应。 这是该类的代码 package com.javacodegeeks.portlets;import java.io.IOException;
import java.io.PrintWriter;import javax.portlet.GenericPortlet;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;public class HelloWorldPortlet extends GenericPortlet {Overridepublic void render(RenderRequest req, RenderResponse res) throws PortletException, IOException {res.setContentType(text/html);PrintWriter writer res.getWriter();writer.println(Hello World!);writer.flush();}} 如您所见Java Servlet API有许多相似之处。 我们可以设置响应的Content-Type在本例中为text / html并从响应中获取PrintWriter以便将数据发送回客户端。 为了将该portlet部署到容器我们需要将其捆绑在Web ArchiveWAR文件中。 同样该过程类似于servlet世界中使用的过程因此部署描述符的一个关键组成部分。 描述符名为“ portlet.xml”它提供有关Portlet名称实现类支持的MIME类型和支持的视图的声明。 这是我们的portlet的简单描述符 ?xml version1.0 encodingUTF-8?
portlet-app xmlnshttp://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsdversion1.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsdhttp://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsdportletdescription xml:langenA Hello World Portlet/descriptionportlet-nameHelloPortlet/portlet-namedisplay-name xml:langenHello World/display-nameportlet-classcom.javacodegeeks.portlets.HelloWorldPortlet/portlet-classexpiration-cache-1/expiration-cachesupportsmime-typetext/html/mime-typeportlet-modeview/portlet-mode/supportssupported-localeen/supported-localeportlet-infotitleHello World/titleshort-titleHello/short-titlekeywordsportlet, hello, world/keywords/portlet-info/portlet/portlet-app 除了portlet的描述符之外还必须提供经典的“ web.xml”。 可以使用它来定义servlet或侦听器等。在我们的情况下它将为空 ?xml version1.0 encodingUTF-8?
!DOCTYPE web-app PUBLIC -//Sun Microsystems, Inc.//DTD Web Application 2.3//EN http://java.sun.com/dtd/web-app_2_3.dtd
web-app/web-app 为了使WAR生成过程自动化我创建了一个简单的ANT脚本可以从Eclipse内部调用该ANT脚本以构建项目并提供可交付结果。 ?xml version1.0 encodingUTF-8 ?project defaultmain basedir.property namebin valuebin /property namesrc valuesrc /property namedist valuedist /property namewar valuewar /target namemainmkdir dir${dist}/war destfile${dist}/helloworld-portlet.war webxml${war}/WEB-INF/web.xmlzipfileset dir${war}/WEB-INF prefixWEB-INF/classes dir${bin}//war/target/project 执行构建脚本如果一切正常则应该在“ dist”文件中找到一个名为“ helloworld-portlet.war”的WAR文件。 将文件复制到“ / server / default / deploy /”目录中。 将会出现类似于以下内容的一行表明该Portlet和Web应用程序已成功部署 [TomcatDeployer]部署ctxPath / helloworld-portletwarUrl …/ tmp / deploy / tmp404700420646853190helloworld-portlet-exp.war / 使portlet可用 最后一步是实际使已部署的Portlet可用。 点击主屏幕右上方的“登录”链接并使用“ admin / admin”默认凭据以管理员身份登录。 成功登录后请访问“管理”链接该链接指向以下URL http// localhost8080 / portal / auth / portal / admin 您将看到以下管理页面 点击“ Portlet定义”选项卡并在其他已部署的Portlet中搜索我们的“ Hello World” Portlet。 然后点击页面右侧的“创建实例”链接。 接下来为新实例提供一个名称例如“ HelloWorldInstance”然后单击按钮以创建它。 然后将为您提供portlet详细信息如下图所示 请注意Portlet的详细信息在很大程度上取决于我们通过“ portlet.xml”描述符提供的配置。 最后我们必须将刚创建的Portlet实例与仪表板相关联。 点击右上方屏幕上的“仪表板”链接或访问以下URL http// localhost8080 / portal / auth / dashboard 请注意这与管理员的仪表板相对应并且当前仅托管默认的portlet。 然后点击“配置信息中心”链接或访问以下URL http// localhost8080 / portal / auth / configureeditPageSelect defaultaction 2 将出现“个人仪表板编辑器”您应该看到一个列表其中包含所有可用的Portlet实例并可以选择将其包括在特定仪表板的中央或左侧区域中。 单击“ HelloWorldInstance”文本然后单击两个可用区域之一的“添加”按钮。 现在我们已经添加了Portlet并且如果我们再次访问仪表板页面http// localhost8080 / portal / auth / dashboard我们应该看到以下图像 我们的“ Hello World”已成功包含在主页中。 与往常一样可以在此处找到创建的Eclipse项目。 翻译自: https://www.javacodegeeks.com/2010/10/hello-world-portlet-jboss-portal.htmljboss 配置上下文路径