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、应用场景&…

ajax前台multipartfile,在SpringBoot中使用Ajax方式MultipartFile上传失败

虽然在正常的html和表单方式下上传效果很好&#xff0c;但是切换到ajax却失败了&#xff0c;并且在调试模式下MultipartFile总是Null。code below works fine//html code//java codeRequestMapping(value "/api/upload", consumes "*/*", method Reques…

简单图片浏览器

在设置开关灯的时候出了一点小问题&#xff0c;默认UISwitch为on当用if(sender.on)做判断时&#xff0c;第一次点击无效。后来调试默认为on&#xff0c;当改变状态时sender.on返回的是0&#xff0c;再次点击返回的是1。判断一个UISwitch为off可以用!sender.on 用到加载本地目录…

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

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

Hdu1166单点更新线段树

入门线段树&#xff0c;单点更新。写了几遍&#xff0c;都是学着notonlysuccess写的。 #include <cstdio> #include <cstring> #include <algorithm> #include <climits> #include <string> #include <iostream> #include <map> #in…

jboss4.2.3_JBoss 4.2.x Spring 3 JPA Hibernate教程

jboss4.2.3在花费大量时间在网上搜索之后&#xff0c;尝试找到对几个项目使用Spring&#xff0c;JPA和Hibenate的最有效方法&#xff0c;我们得出了将在下面介绍的配置的结论。 将Spring与JPA和Hibernate集成包括几个步骤&#xff1a; Spring容器的配置 JPA ORM层的配置 Hib…

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

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

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

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

(转)iOS面试题目

1、Object-C有多继承吗&#xff1f;没有的话用什么代替&#xff1f;cocoa 中所有的类都是NSObject 的子类 多继承在这里是用protocol 委托代理 来实现的 你不用去考虑繁琐的多继承 ,虚基类的概念. ood的多态特性 在 obj-c 中通过委托来实现. 2、Object-C有私有方法吗&#xff1…

Queue Explorer过期处理

Queue Explorer是收费软件,用一段时间后会显示过期界面无法使用&#xff0c; 我们可以删除注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Cogin\QueueExplorerPRO 下的项 然后继续使用该软件转载于:https://www.cnblogs.com/event/p/3935425.html

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…

Java集合---HashSet的源码分析

一、 HashSet概述&#xff1a; HashSet实现Set接口&#xff0c;由哈希表&#xff08;实际上是一个HashMap实例&#xff09;支持。它不保证set 的迭代顺序&#xff1b;特别是它不保证该顺序恒久不变。此类允许使用null元素。 二、 HashSet的实现&#xff1a; 对于HashSet而言&…

lambda语法_Java Lambda语法替代

lambda语法关于lambda-dev邮件列表的讨论已经开始解决lambdas /函数文字的Java语言语法应该是什么样的问题。 让我们看一个稍微平凡的例子&#xff0c;然后尝试弄清楚问题。 Perl的人有一个很好的例子&#xff0c;说明以某种功能性的方式使用函数引用–他们称其为Schwartzian变…

CSDN论坛上的一道算法题

源地址为&#xff1a;http://bbs.csdn.net/topics/390854089 昨天晚上在CSDN论坛上看到这道题&#xff0c;思索一番后想到一个解决方案&#xff0c;也简单实现了。今天早上把博客补一补。算是做个笔记吧。 题目&#xff1a; 有m个人面向南方站成一排(m ≥1)&#xff0c;每喊一次…

Eclipse程序员要掌握的常用快捷键

判断一个人的编程水平&#xff0c;就看他用键盘多&#xff0c;还是鼠标多。用键盘一是为了输入代码&#xff08;当然了&#xff0c;也包括注释&#xff09;&#xff0c;再有就是熟练使用快捷键。曾有人在豆瓣评《卓有成效的程序员》&#xff1a;“人有多大懒&#xff0c;才有多…

spring依赖注入_Spring依赖注入技术的发展

spring依赖注入回顾Spring框架的历史&#xff0c;您会发现在每个发行版中实现依赖注入的方法越来越多。 如果您使用该框架已经超过一个月&#xff0c;那么在这篇回顾性文章中可能不会发现任何有趣的东西。 除了Scala中的最后一个示例&#xff0c;没有其他东西希望如此。 首先是…

java 获取oracle mysql sqlserver 链接 connection

import java.sql.Connection; import java.sql.DriverManager; //获取sqlserver connection public static Connection getSQLServerConn(){ Connection dbConn null; String driverName "com.microsoft.sqlserver.jdbc.SQLServerDriver"; …

TortoiseSVN菜单项功能说明

原帖地址&#xff1a;http://blog.csdn.net/windone0109/article/details/4030274 TortoiseSVN是windows下其中一个非常优秀的SVN客户端工具。通过使用它&#xff0c;我们可以可视化的管理我们的版本库。不过由于它只是一个客户端&#xff0c;所以它不能对版本库进行权限管理。…

hornetq_Spring 3 HornetQ 2.1集成教程

hornetq通过Spring框架使用JBoss的新超高性能消息传递系统。 HornetQ是一个开放源代码项目&#xff0c;用于构建多协议&#xff0c;可嵌入&#xff0c;非常高性能的集群异步消息传递系统。 它是用Java编写的&#xff0c;并且可以在具有Java 5或更高版本运行时的任何平台上运行…