jboss 配置上下文路径_JBoss Portal上的“ Hello World” 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:// localhost:8080 / portal /

您应该能够看到以下屏幕:


注意:JBoss门户在部署期间会加载很多类,由于永久生成空间有限,您可能会遇到OutOfMemory错误。 如果是这种情况,您将发现服务器没有响应,并且将出现以下错误消息:

“ java.lang.OutOfMemoryError:PermGen空间”

要解决此问题,请编辑启动脚本(对于Windows为run.bat,对于Linux为run.conf),并在JVM参数中添加以下参数:

-XX:MaxPermSize = 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 Archive(WAR)文件中。 同样,该过程类似于servlet世界中使用的过程,因此部署描述符的一个关键组成部分。 描述符名为“ portlet.xml”,它提供有关Portlet名称,实现类,支持的MIME类型和支持的视图的声明。 这是我们的portlet的简单描述符:

<?xml version="1.0" encoding="UTF-8"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsdhttp://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"><portlet><description xml:lang="en">A Hello World Portlet</description><portlet-name>HelloPortlet</portlet-name><display-name xml:lang="en">Hello World</display-name><portlet-class>com.javacodegeeks.portlets.HelloWorldPortlet</portlet-class><expiration-cache>-1</expiration-cache><supports><mime-type>text/html</mime-type><portlet-mode>view</portlet-mode></supports><supported-locale>en</supported-locale><portlet-info><title>Hello World</title><short-title>Hello</short-title><keywords>portlet, hello, world</keywords></portlet-info></portlet></portlet-app>

除了portlet的描述符之外,还必须提供经典的“ web.xml”。 可以使用它来定义servlet或侦听器等。在我们的情况下,它将为空:

<?xml version="1.0" encoding="UTF-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 version="1.0" encoding="UTF-8" ?><project default="main" basedir="."><property name="bin" value="bin" /><property name="src" value="src" /><property name="dist" value="dist" /><property name="war" value="war" /><target name="main"><mkdir dir="${dist}"/><war destfile="${dist}/helloworld-portlet.war" webxml="${war}/WEB-INF/web.xml"><zipfileset dir="${war}/WEB-INF" prefix="WEB-INF"/><classes dir="${bin}"/></war></target></project>

执行构建脚本,如果一切正常,则应该在“ dist”文件中找到一个名为“ helloworld-portlet.war”的WAR文件。 将文件复制到“ / server / default / deploy /”目录中。 将会出现类似于以下内容的一行,表明该Portlet和Web应用程序已成功部署:

[TomcatDeployer]部署,ctxPath = / helloworld-portlet,warUrl =…/ tmp / deploy / tmp404700420646853190helloworld-portlet-exp.war /

使portlet可用
最后一步是实际使已部署的Portlet可用。 点击主屏幕右上方的“登录”链接,并使用“ admin / admin”默认凭据以管理员身份登录。 成功登录后,请访问“管理”链接,该链接指向以下URL:

http:// localhost:8080 / portal / auth / portal / admin

您将看到以下管理页面:


点击“ Portlet定义”选项卡,并在其他已部署的Portlet中搜索我们的“ Hello World” Portlet。 然后点击页面右侧的“创建实例”链接。


接下来,为新实例提供一个名称,例如“ HelloWorldInstance”,然后单击按钮以创建它。


然后将为您提供portlet详细信息,如下图所示:


请注意,Portlet的详细信息在很大程度上取决于我们通过“ portlet.xml”描述符提供的配置。

最后,我们必须将刚创建的Portlet实例与仪表板相关联。 点击右上方屏幕上的“仪表板”链接或访问以下URL:

http:// localhost:8080 / portal / auth / dashboard

请注意,这与管理员的仪表板相对应,并且当前仅托管默认的portlet。 然后,点击“配置信息中心”链接或访问以下URL:

http:// localhost:8080 / portal / auth / configure?editPageSelect = default&action = 2

将出现“个人仪表板编辑器”,您应该看到一个列表,其中包含所有可用的Portlet实例,并可以选择将其包括在特定仪表板的中央或左侧区域中。 单击“ HelloWorldInstance”文本,然后单击两个可用区域之一的“添加”按钮。


现在,我们已经添加了Portlet,并且如果我们再次访问仪表板页面(http:// localhost:8080 / portal / auth / dashboard),我们应该看到以下图像:


我们的“ Hello World”已成功包含在主页中。 与往常一样,可以在此处找到创建的Eclipse项目。

翻译自: https://www.javacodegeeks.com/2010/10/hello-world-portlet-jboss-portal.html

jboss 配置上下文路径

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359619.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创建型-工厂方法模式

1、工厂方法模式意图&#xff1a; 定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。 工厂方法模式用于为属于同一类别的产品定义对应的具体工厂类&#xff0c;并将具体工厂类开放给用户类来使用。 2、应用场景&…

服务器添加角色显示灰色,添加角色 web服务器 灰色

添加角色 web服务器 灰色 内容精选换一换OneAccess支持通过AD认证用户身份和控制权限。AD全称Active Directory&#xff0c;中文名称活动目录。您可以将AD简单理解成一个数据库&#xff0c;其存储有关网络对象的信息&#xff0c;方便管理员和用户查找所需信息。本文主要介绍One…

虚拟服务器关机怎么开,云服务器关机了怎么开启

云服务器关机了怎么开启 内容精选换一换开启防护后&#xff0c;您可以根据需要进行安全配置。包括配置常用登录地、常用登录IP、SSH登录IP白名单&#xff0c;开启恶意程序自动隔离查杀功能。配置常用登录地后&#xff0c;企业主机安全服务将对非常用地登录主机的行为进行告警。…

web文件怎么传到服务器,web文件传到服务器

web文件传到服务器 内容精选换一换工具中所有涉及上传文件功能的&#xff0c;如果需要上传的文件大于1GB或者解压后超过剩余磁盘空间的一半&#xff0c;则需要释放磁盘空间或手动将文件上传至服务器&#xff0c;其他情况可通过Web界面上传功能上传。Web服务端证书&#xff0c;即…

weblogic ejb_使用Oracle WebLogic对应用程序外部的EJB的引用

weblogic ejb在之前的文章中&#xff0c;我们对EJB 3.0版及其为您提供的构建Java EE应用程序的可移植机制进行了概述。 由于Java EE规范都是关于可移植性的&#xff0c;因此冒着重复自我的风险&#xff0c;我们经常强调EJB v。3.0规范上仍然存在最重要的可移植性限制&#xff1…

Android Studio显示行数

Android Studio在打开的文件左側单击鼠标右键&#xff0c;也能像Eclipse一样设置显示代码行数&#xff0c;如图1。可是这边跟Eclipse有一个非常大的差别&#xff0c;Eclipse设置后&#xff0c;其余的相应文件也跟着生效&#xff0c;即使文件关闭后又一次打开行数也还是会显示&a…

visio 小技巧

Visio作图非常的方便 目前我还是用Visio2003&#xff0c;有一些小技巧&#xff0c;记录一下。 1、visio修改文本框文字对齐方式。默认的对齐方式是上下、左右居中。修改的位置: 在一个文档中可以插入多个标签页&#xff0c;当需要分页&#xff0c;用不同页归类不同信息的时候使…

java中字符串的精确匹配_Java最佳实践–字符串性能和精确字符串匹配

java中字符串的精确匹配在使用Java编程语言时&#xff0c;我们将继续讨论与建议的实践有关的系列文章&#xff0c;我们将讨论String性能调优。 我们将专注于如何有效地处理字符串创建&#xff0c; 字符串更改和字符串匹配操作。 此外&#xff0c;我们将提供我们自己的用于精确字…

My.Ioc 代码示例——避免循环依赖

本文的目的在于通过一些示例&#xff0c;向大家说明 My.Ioc 支持哪些类型的依赖关系。也就是说&#xff0c;如何设计对象不会导致循环依赖。 在 Ioc 世界中&#xff0c;循环依赖是一个顽敌。这不仅因为它会导致 Ioc 容器抛出异常&#xff0c;而且还因为它是不可预知的&#xff…

asp.net中两款文本编辑器NicEdit和Kindeditor

分类&#xff1a; C#/ASP.Net 2012-10-09 22:35 665人阅读 评论(0) 收藏 举报 文本编辑asp.nettextboxserveraspsafari目录(?)[] 做过Web开发的朋友相信都使用过富文本编辑器&#xff0c;比较出名的CuteEditor和CKEditor很多人应该已经使用过&#xff0c;在功能强大的同时需要…

导出oracle awr分析报告,配置oracle内存参数,察看表空间使用率

cmd 命令生成awr报告: cmd 窗口 输入 -> Sqlplus sys/orclorcl as sysdba (sys登陆oracle).导出awr命令 ?/rdbms/admin/awrrpt.sql 3..输入导出的文件格式 为 html 回车 4输入数字1 为导出今天的分析报告 &#xff0c;2 3 。。。&#xff0c;回车 5.输入开始 snap id…

android多点触控自由对图片缩放

在系统的相册中,观看相片就可以用多个手指进行缩放.要实现这个功能,只需要这几步:1.新建项目,在项目中新建一个ZoomImage.javapublic class ZoomImageView extends View {//初始化状态常量public static final int STATUS_INIT1;//图片放大状态常量public static final int STA…

jboss eclipse_调试生产服务器– Eclipse和JBoss展示

jboss eclipse您是否编写有错误的代码&#xff1f; 不&#xff0c;当然不是。 对于我们其余的人&#xff0c;他们确实会编写带有bug的代码&#xff0c;我想解决一个非常敏感的问题&#xff1a;调试在生产服务器上运行的应用程序。 因此&#xff0c;您的应用程序已准备好进行部…

Chrome 控制台不完全指南

Chrome的开发者工具已经强大到没朋友的地步了&#xff0c;特别是其功能丰富界面友好的console&#xff0c;使用得当可以有如下功效&#xff1a; 更高「逼格」更快「开发调试」更强「进阶级的Frontender」Bug无处遁形「Console大法好」console.log 大家都会用log&#xff0c;但鲜…

datanucleus_DataNucleus 3.0与Hibernate 3.5

datanucleus如官方产品站点所述&#xff0c; DataNucleus Access Platform是现有的最符合标准的开源Java持久性产品。 它完全符合JDO1 &#xff0c; JDO2 &#xff0c; JDO2.1 &#xff0c; JDO2.2 &#xff0c; JDO3 &#xff0c; JPA1和JPA2 Java标准。 它还符合OGC简单功能规…

Android学习笔记——Menu(二)

知识点&#xff1a;这次将继续上一篇文章没有讲完的Menu的学习&#xff0c;上下文菜单(Context menu)和弹出菜单(Popup menu)。 上下文菜单上下文菜单提供对UI界面上的特定项或上下文框架的操作&#xff0c;就如同Windows中右键菜单一样。 在Android中&#xff0c;有两种提供上…

eclipse卡慢解决办法

1.设置JVM运行内存 1.1编辑eclipse.ini 1.2 编辑eclipse.ini,设置jvm运行内存参数&#xff0c;最小内存&#xff1a;物理内存*0.2&#xff0c; 最大内存&#xff1a; 物理内存*0.6&#xff1b; 其中-vmargs为必须添加参数&#xff08;-vmargs的意思是设置JVM参数&#xff09;,…

QQ游戏百万人同时在线服务器架构实现

转载自&#xff1a;http://morton5555.blog.163.com/blog/static/976407162012013112545710/# QQ游戏于前几日终于突破了百万人同时在线的关口&#xff0c;向着更为远大的目标迈进&#xff0c;这让其它众多传统的棋牌休闲游戏平台黯然失色&#xff0c;相比之下&#xff0c;联众…

ruby和python_Ruby,Python和Java中的Web服务

ruby和python今天&#xff0c;我不得不准备一些示例来说明Web服务是可互操作的。 因此&#xff0c;我已经使用Metro使用Java创建了一个简单的Web服务&#xff0c;并在Tomcat上启动了它。 然后尝试使用Python和Ruby消耗它们。 这是全部完成的过程… Java中的Web服务 我从Java中…

USB描述符【整理】

USB描述符 USB描述符信息存储在USB设备中&#xff0c;在枚举过程中&#xff0c;USB主机会向USB设备发送GetDescriptor请求&#xff0c;USB设备在收到这个请求之后&#xff0c;会将USB描述符信息返回给USB主机&#xff0c;USB主机分析返回来的数据&#xff0c;判断出该设备是哪一…