StringbeansTM Portal管理手册
Stringbeans框架下的门户网站管理指南
最近在学习Portal网站开发,接解到Stringbeans框架,在学习的过程中,翻译了该文档。该文是基于2.1版本的。目前已经存在的是3.5版本。不过大同小异仅供参考。由于个人能力有限,有些地方翻译的不准确。还请参照原文档来理解其含义。
也提供了文档下载
谢谢!
版本历史 | |
v 0.9 | 2003/11/10 |
v 1.0 | 2004/1/4 |
v 1.1 | 2004/4/17 |
v 2.0 | 2004/6/6 |
v 2.1 | 2004/7/26 |
v 2.1.1 | 2004/8/17 |
StringbeansTM Portal管理手册
Stringbeans框架下的门户网站管理指南
Table of Contents
内容列表
许可证
Stringbeans 是一款自由软件;在基于免费软件基金发布的GUN GPL协议下,您可以重新分配或修改它(或者是版本2的许可证或最新版本)。
简介
StringbeansTM 门户产品是由门户组件容器和有效管理门户应用程序框架组成。当前版本的主要特点是:
· 依照JSR 168标准部署门户组件
· 门户组件和用户登录日志可以存放在文件和数据库中
· 预设门户组件的访问控制基于用户ID,角色,和任意的(目前流行的)关系型数据库
· 门户组件视图基于用户ID,角色,和它们之间的关系
· 主题机制提供了个性化的外观和体验
· 门户组件可以用来展现RSS头条,从数据库表中提取数据以多页标签的形式展现,报表,图表,通过XSL处理的XML文档,本地或远程文件内容。
· SSL连接支持
· JAAS认证支持
· 对用户默认视图,日志方法,门户组件权限,和门户应用程序访问控制的交互配置。
· 门户组件管理允许快速地创建、配置、移除、和部属门户组件
· 内置用户身份认证和数据源
· Built-in user authentication and creationof data sources.
· XHTML-MP and WML 支持.
· 包含 MVCPortlet.
Stringbeans 被部署于J2EE WEB应用程序容器中(servlet2.3/2.4 jsp1.2/2.0)。不需要EJB支持。当前版本已在 tomcat4.1.x和tomcat5.0.1x测试过。没有明确指定使用哪种web服务器。数据库已在SAPDB 7.4.03, HypersonicSQL 1.7.1, MySQL 4.0.17, PostgreSQL 7.4.1 andFirebird 1.5.1上测试过。
安装
前提条件:
· Servlets/JSP容器 必须支持severlet2.3/jsp1.2或servlet2.4或jsp2.0版本。
· A JDBC 2.0允许的关系型数据库.
· JDK1.4以上版本 JAVA_HOME 环境变量,已指向安装目录
Tomcat和Stringbeans的安装
从2.0版以后,在stringbeans-webapp-x.x.zip中stringbeans Web应用是以WAR文件进行部署的。在引之前,主要的部署方法是做为根应用部署。这人压缩包绑定了一个tomcat服务器做为stringbeans安装的根环境。如果您下载了此安装包,您不需要设置任何事情。
Tomcat下运行stringbeans服务
1. 下载 stringbeans-x.x_tomcat-4.1.xx.zip 压缩包.
2. 解压安装包.将会创建 jakarta-tomcat-4.1.xx目录
3. 启动tomcat Windows: <tomcat根目录>\bin\startup.bat Unix or Linux: < tomcat根目录>/bin/startup.sh
4. Tomcat 被设置成运行stringbeans的根环境。
以下内容用来介绍部署war文件,也是将其部署在根环境下。
部署stringbeans WAR文件
下载WAR文件。
1. 解压压缩包.包中将包含stringbeans.war、安装说明、示例数字证书
2. 拷贝 stringbeans.war 文件到 <tomcat-root-dir>/webapps 目录 <tomcat-root-dir> 指的是tomcat安装的根目录。
3. 启动tomcat
4. WAR文件已经被配置成可以运行的应用。无需其它配置,只要将其放入tomcat/webapp目录下即可运行。如果您满足于默认设置,您可以跳过门户设置章节
5. 默认的预配置了Hypersonic SQL数据库。您无需重新配置它。如果想使用其它数据库,你必须要进行配置。在portal.xml 配置文件中的<local-data-sources> 标签。当配置完数据库设置,您必须重新启动tomcat使其生效。数据创建章节提供了数据库详细参数设置说明,用来配置数据源。
6. 提供安全链接支持,您必须配置您的web服务器。如果tomcat做为一个独立的web服务,将有必要将tomcat设置成高级的安全套接字。当tomcat运行在其它web服务(例如apache),通常将有必要设置主web服务器处理从用户登录的SSL数据。关于这部份web 服务器文件中将会有更详细的说明。链接:http://tomcat.apache.org/tomcat-4.1-doc/ssl-howto.html
也可以参看本文档中的SSL创建章节
7. 默认情况下Stringbeans对用户密码在存储到数据库之前要做加密。参看:启用/关闭密码加密功能。
Stringbeans作为根应用部署
1. Stringbeans做为根环境安装(意味着访问stringbeans门户应用只需要键入http://http://<server-name>,取带http://<server-name>/stringbeans), 解压stringbeans.war文件到名为”stringbeans”的目录下。如果没有需要手动创建。
注意:
o 如果您之前已经部署了stringbeans.war,您只需要将其移动或“剪切粘贴”stringbeans目录从<tomcat-root-dir>/webapps 目录到 <tomcat-root-dir>
o Stringbeans也可以以war包的形式部署到tomcat根环境下。如之前提到的stringbeans-x.x_tomcat4.1.xx.zip包中的形式
2. 移动“Stringbeans”目录及目录下所有的子目录到tomcat根目录下。
注意:
o Stringbeans安装目录将其引用为<stringbeans-webapp-root>.
o <tomcat根目录>/webapps/stringbeans等于 <stringbeans-webapp-root>
Stringbeans 目录结构:
stringbeans
|
|------ doc
|
|------ error
|
|------ login
|
|------ my
|
|------ personalize
|
|------ portlets
| |
| |------ portal_admin
| |
| |------ user_admin
| |
| |------ <other portlets>
|
|
|------ themes
| |
| |------ images
|
|
|------ WEB-INF
|
|------ lib
|
|------ db
|
|------ cert
|
|------ setup
| |
| |------ sql
|
|------ logs
| |
| |------ portal
|
|------ users
3. 修改tomcat配置文件: server.xml, 在 <tomcat-root-dir>/conf 添加如下标记: <Context path="" docBase="../stringbeans" debug="0" />
Tomcat典型的根环境是:ROOT,如果它被设置成有效,则需要改它的名字为任意名字,如下:
<Context path="root" docBase="ROOT"debug="0"/>
4. 您可以连接stringbeans门户,通过输入web服务器名称。
连接到stringbeans门户应用
· 启动浏览器,输入地址:: http://<server name 或 IP address>:<port-number>/stringbeans, 例如,
http://localhost:8080/stringbeans
将出现登录页面
注意:
o 如果您下载的压缩包绑定了tomcat,stringbeans将会被安装成为根应用。您只需要输入: http://localhost:8080 即可
· 从其它支持XHTML-MP或WML设置访问应用,将以上述同样的方式进行访问。
§ 输入URL 例如. http://192.168.0.100:8080/stringbeans 将前往门户登录页面
§ 根据页面的指示进行访问.
§ 仅有很少的门户组件支持XHTML-MP和WML访问。
您可以如下预设用户进行登录:
§ admin: 拥有额外的管理用户和监控用户特权。只有admin可以创建用户
§ 登录模板:用来配置登录页面
§ 默认模板:设置用户的默认视图 默认模板是用户第一次登录的视图或布局
§ 属性模板:用来配置属性总局
§ 视图用户模板:配置用户属性页面布局的视图
预定义的 HypersonicSQL 数据定义了如下用户名/密码:
user | password |
admin | admin |
default-template | default |
login-template | login |
preference-template | preference |
view-user-template | view |
创建新用户
· 以admin登录。通过点击菜单栏上的标签链接 前往 ”User Admin” 界面。
· 您将会在面板的左侧看到用户和角色菜单,用户列表将以高亮显示。点击“new user”按钮将链接到新页面。不要忘记在底下的角色列表中选择用户的角色。
· 如果 allow-self-registration 标签出现在(默认)portal配置文件中(portal.xml),stringbeans允许新用户在登录页面上通过链接来自注册一个新用户
更多的stringbeans配置
· 配置stringbeans主配置文件 大部分时间,您不需要修改该配置文件。当以admin用户登录时,可以使用交互式的门户配置方式。 stringbeans的主配置文件: 在 <stringbeans-webapp-root>/WEB-INF/ 目录下 portal.xml 和 portlet.xml 。portal.xml将在下面解释。由于portlet.xml是标准的JSR168描述文档。将不在本文中进行过多的讨论。然而,在当前stringbeans内建的portlet类型,将会在门户组件章节进行讨论。如一些特殊的门户组件是从基本的门户组件创建而来。帮助文件可以通过点击每个门户组件的帮助模式来提供帮助。
注意:
o 如果你直接修改了配置文件,改变将在容器下次重启时生效。
· 新建和部署新的门户组件到stringbeans门户中
· 当前stringbeans版本提供交互式的添加,禁用,移除,配置stringbeans内建的门户组件类型管理。例如:图表,文件,单行编辑,报表,RSS,表格,链接,和XSL等组件。在运行时,如果你想附加组件类型并想将其集成一个门户页面,如要通过如下步骤:
§ 添加和配置你的门户组件在portlet.xml配置文件中。
注意:
o 门户组件必须完全符全JSR168标准
§ 添加你的门户组件类文件.class(jar)在<stringbeans-webapp-root>/WEB-INF/lib/ 目录下。
§ 如查有jsp文件,强烈建议在<stringbeans-webapp-root>/portlets/ 目录下建立新的目录来存放你的门户组件。
§ 重启tomcat.
Stringbeans提供国际化功能。 当前支持的国际化有 美英, 英英, 德语,法语, 印尼 和 西班牙.要添加其它国际化,请参见国际化章节。
登录应用程序配置portal.xml。个性化登录页面,以登录模板用户登录并设置个性化链接地址。
数据库服务器设置
· Stringbeans 必须工作在JDBC 2.0 支持的关系型数据库上。以下数据库在当前版本中已经做过测试: Hypersonic SQL1.7.1, MySQL 4.0.17, SAPDB 7.4.03, PostgreSQL 7.4.1 and Firebird 1.5.1.
· 预设的Hypersonic数据库已经包含在stringbeans发行版本中。没有必要对该数据库进行重新定义。它已经可以使用。数据库文件被保存在 <stringbeans-webapp-root>/WEB-INF/db 目录下。
· 要配置stringbeans工作在其它数据库下,需要修改portal.xml配置文件下的<local-data-sources>属性,这里会有三个默认的数据源被定义。没有必要去配置所有的数据源来使用相同的数据库
注意:
o 如果使用除Hypersionic数据库以外的数据库,那么相应的数据库JDBC JAR文件,必须复制到 <stringbeans-webapp-root>/WEB-INF/lib目录
o 还必须在 <local-data-sources>标签中配置相应的属性:JDBC驱动类名,数据库用户名和密码(3.5版还要配置maxIdle,maxActive)
· 和stringbeans的发行版本一样,不同的数据库的数据脚本存放于webapp/stringbeans/WEB-INF/setup/sql, 文件夹内。选择与您使用的数据库匹配的数据库脚本。例如sb_sapdb.sql是针对SAPDB数据库的。配置stringingbeans 工作于不同的数据库,你必须修改portal.xml配置文件。具体操作参见<local-data-sources> 标签创建章节
SAPDB
· 创建并注册数据库实例, 例如: SBDB
· 创建用户,例如 :sa with DBA NOT
创建用户命令中的EXCLUSIVE属性是为了使用户在同一时间打开多个会话有效。创建用户脚本如下: CREATE USER sa PASSWORD pw DBA NOT EXCLUSIVE 注意只有DBA用户才能创建用户,所以你必须以DBA登录。
· 以管理员用户登录数据库,可以依照如下步骤:
如果你使用图形界面,例如:SQLStudio,打开并执行在 <stringbeans-webapp-root>/WEB-INF/setup/sql/目录下的脚本sb_sapdb.sql 将创建所有需要的表。
· JDBC驱动通常会在<SAPDB_HOME>/dep/misc的安装路径下找到sapdbc.jar文件。
· 驱动类 ==> com.sap.dbtech.jdbc.DriverSapDB
· URL ==> jdbc:sapdb://<database hostname>/<database name>,
· SAPDB 在线文档
HypersonicSQL
· HypersonicSQL jar 文件 (hsqldb.jar) 包含了数据库服务,管理工具和JDBC驱动。
· 如果默认使用该数据库,不需要做任何事情来创建数据库。所有的数据库相关文件都被存储于<stringbeans-webapp-root>/WEB-INF/db目录
· 默认数据库 HypersonicSQL数据库可以通过数据库管理工具进行管理。你可以找到一些文件(windows)或 shell脚本文件在
· The default HypersonicSQL database can bemanaged using Database Manager utility. You can find batch (Windows) and shellscript (Unix/Linux) files in <stringbeans-webapp-root>/WEB-INF/db 目录下,通过 java -classpath../lib/hsqldb.jar org.hsqldb.util.DatabaseManager -url jdbc:hsqldb:SBDB命令来启动管理
· 驱动: org.hsqldb.jdbcDriver
· URL (Server mode):jdbc:hsqldb:hsql://<database host name>/<database name>, 例如. jdbc:hsqldb:hsql://localhost
· URL (Standalone mode):jdbc:hsqldb:<database name>, 例如 jdbc:hsqldb:SBDB
· HypersonicSQL
MySQL
· 安装此数据库,请参见 MySql文档
· 驱动: com.mysql.jdbc.Driveror org.gjt.mm.mysql.Driver
· URL: jdbc:mysql://localhost/
· JAR:JDBC driver.
· MySQL 在线文档.
PostgreSQL
· 参见PostgreSQL文档
· Driver: org.postgresql.Driver
· URL: jdbc:postgresql://<database hostname>:<host port>/<database name>
· JAR:JDBC driver.
· PostgreSQL :在线文档.
Firebird
· 参见 Firebird 文档.
· Driver: org.firebirdsql.jdbc.FBDriver
· URL: jdbc:firebirdsql://<database hostname>:<host port>/<database name>
· JAR:JDBC driver.
· Firebird:在线文档
启用/关闭密码加密
· 默认情况,stringbeans将用户密码在存储到数据库之前要进行加密。如果要开启/关闭密码加密功能,你必须更新在启用数据库中的密码字段
· 初始化数据库脚本提供的预设用户密码是加密的。密码的明文在预定义用户章节提到过。参见相应章节。
· 如查您想清除数据库中存放的密码(关闭密码加密)可以通过如下步骤:
§ 在portal.xml中移除 <encrypt-password>
§ 上一步的执行可以通过手动修改配置文件(需要重启tomcat)或使用门户应用配置门户组件(运行时)
两种方法,你都必须更新更新注册用户的密码在SB_USERS表中设置用密码为明文开式,使用如下sql脚本: UPDATE SB_USERS SET pass_word='admin'WHERE userid='admin' 对所有的用户重复执行类似命令。
§ 反之,启用密码加密也要通过上述步骤完成。
SSL (Secure Socket Layer) 安装
SSL允许web浏览器和web服务器之前通信建立在一个安全的连接上。安全门户组件需要SSL连接提供支撑。下面将描述怎样在tomcat上建立SSL。你也可以参考tomcat怎么样建立SSL文档。该步骤仅需要tomcat作为单独的web服务。当以tcomcat为主要的 servlet/jsp容器运行在其它web服务后面。例如Apache,通常有必要设置主web服务器。例如Apache来处理来自用户的SSL链接。
· 获取数字证书 stringbeans 提供了”demo”认证,demo.jks,在Web发行版本压缩包内和stringbeans.war同一目录。你也可以<stringbeans-webapp-root>/WEB-INF/setup/cert/demo.jks 下找到同样的文件。
· 拷贝证书文件到一个目录。如果你拷贝到tomcat根目录,你以在下一步的配置中使用相对路径。
· 修改tomcat配置文件server.xml tomcat根目录/conf目录下
§ 删除从SSL/HTTP1.1 Connector部份的注释
§ 在<context>标签内添加<factory>标签(tomcat4.x)或在tomcat 5.x的<Connectior>标签下添加
keystoreFile = “认证文件路径”
keystorePass = “keystore密码”
· “认证文件路径”是指向认证文件的路径。可以是绝对或相对路径例如:
webapps/stringbeans/WEB-INF/setup/cert/demo.jks
注意:
o 路径必须是已经存在的路径,你不能指向stringbeans的目录内,除非它是非压缩
§ <keystore密码>: 如果使用demo的认证文件密码是“passwd”
· Tomcat默认端口普通:8080,https是8433。你可以设置这些端口号在<Connector>标签内,标签的非安全连接是80,安全的连接端口为433。如果你修改此项,你必须设置“redirectPort(得定向端口)”数值在匹配的非安全<Connector>标签内或匹配的安全<Connector>标签。
注意:
o 如果非标准端口被使用一个或两个都用,你必须在portal.xml文件中设置门户URL前缀或门户安全URL前缀。你也可以在运行时选择”portal basic configuration”组件配置该项
当用户第一次使用SSL访问安全页面时,将会强出一个关于认证详细信息的界面。当使用“demo”认证时安全警告对话框将会弹出,这是正常的。用户必须接受认证才能运行程序。
JAAS (Java Authentication and Authorization Service)配置
1. 默认情况,stringbeans使用内建的用户认证和数据源来认证用户。要使用JAAS你必须在stringbeans应用的web (<stringbeans-webapp-root>/WEB-INF/web.xml)部署描述符中设置jaas_login_app_name参数到Login过滤器初始化参数中。如下示例展示“SBPortalLoginApp”登录应用程序。该程序名必须必须与下一步中配置的登录模块的名称一致。
2. <init-param>
<param-name>jaas_login_app_name</param-name>
<param-value>SbPortalLoginApp</param-value>
<description>JAASlogin application name</description>
</init-param>
3. 创建登录模块配置文件,stringbeans提供了登录配置文件sb-jaas.login在目录<stringbeans-webapp-root>/ WEB-INF/下。该配置文件标明了JAAS应用的名称和使用的登录模块。 下面的示例展示了在sb-jaas.login文件中,应用程序”SBportalLoginApp”和由stringbeans提供的登录模块“DBLoginModule”,如查你有自己定义的实现,请在这里声明 SbPortalLoginApp
{
com.nabhinc.portal.auth.DBLoginModule required
}
4. 修改java.security主文件(大多数情况,该文件位于jre目录/lib/security目录下)。
· 添加登录,配置,URL名值对来标识你在第二步中配置的文件(通常在java.security文件的”Default Login Configuration File”部分进行配置)例如: login.config.url.1=file:${tomcat-home}/webapps/stringbeans/WEB-INF/sb-jaas.login
注意:
替换 ${tomcat-home} 变量为你的真实路径
· 为JAAS添加其它权限,可以通过以下两个步骤
§ 在java.security后添加java.policy.url键。Stringbeans提供了sb-jaas.policy策略文件(<stringbeans-webapp-root>/WEB-INF/),该文件标明必要的认证用户权限。Java.security文件通常会指定默认的策略文件。例如
policy.url.3=file:${tomcat-home}/webapps/stringbeans/WEB-INF/sb-jaas.policy
或者
添加额外的java.policy文件到jre目录/lib/security/java.policy
grant codeBase"file:${tomcat.home}/webapps/stringbeans/WEB-INF/lib" { permission javax.security.auth.AuthPermission"createLoginContext"; permission javax.security.auth.AuthPermission "modifyPrincipals"; permission javax.security.auth.AuthPermission"modifyPrivateCredentials"; permission javax.security.auth.AuthPermission"doAsPrivileged"; }
默认的java.policy通常被包含在java.securtiy文件中,所以你不必再到java.security文件中修改。
配置
登录页面配置
当一个用户第一次访问主门户页面,他/她将会被重安向到登录页面,该页面显示输入用户名密码表单项。登录页面是一个模板,我们可以交互地修改它。如要这样做,参见登录模板。一旦登录,点击“personalize”链接来编辑“home”页面。确认在你的布局中已包含”LoginPortlet”。当完成配置,单击“save”按钮来保存为新的模板。
配置默认门户视图
当用户自定义视频为找到时,Stringbeans 预定义了默认的视图将被显示。例如,新用户,编辑这种布局,首先以默认用户登录。像编辑你的个性化页面布局一样创建或编辑门户页面。所有没有配置个性化页面的用户将呈现该页面为默认视图。
门户组件配置
门户组件是通过stringbeans服务加载指定文件portlet.xml来加载的。Portlet.xml的配置和内容是依照JSR168标准文档。因此,portlet.xml的配置细节将不在此处详细描述。特殊的门户组件配置将在门户组件章节进行讨论
门户配置
Stringbeans描述门户配置是定义在portal.xml文件中(它位于stringbeans web应用的WEB-INF目录中)。该文件的配置涉及到访问控制,日志,门户视图等等。配置信息被标记在名为portal的根标签内。如下所示
<portal>
<portal-url-prefix> ... </portal-url-prefix>
<portal-secure-url-prefix> ... </portal-secure-url-prefix>
<default-data-source> ... </default-data-source>
<data-sources> ... </data-sources>
<data-source... />
</local-data-sources>
<not-found-portlet>NotFoundPortlet</not-found-portlet>
<user-info-mapping> ... </user-info-mapping>
<interceptor> ... </interceptor>
</interceptors>
<login-interceptor> ... </login-interceptor>
</login-interceptors>
<user-config-store>... </user-config-store>
</user-config-stores>
<user-config-manager> ... </user-config-manager>
<access-controller> ... </access-controller>
<themes-dir>themes</themes-dir>
<default-date-pattern> ... </default-date-pattern>
<start-date> ...</start-date>
<send-username-password> ... </send-username-password>
<remember-me> ... </remember-me>
<remember-username> ... </remember-username>
<default-page-width> ... </default-page-width>
<layout>... </layout>
</page-layouts>
<portal-admin-email/> ... </portal-admin-email>
<wide-portlets> ... </wide-portlets>
<online-user-table-name> ... </online-user-table-name>
<session-timeout-interval> ... </session-timeout-interval>
<default-locale ... />
<locale .../>
</supported-locales>
<portal-app> ... </portal-app>
</portal-apps>
</portal>
Figure 1
每一个配置片段的所对就的xml子元素将在以下章节进行讨论。不是按照子元素的出现顺序进行描述的。
<portal-url-prefix>
非安全服务链接地址前缀被用于创建门户引用内容。如果支持安全链接,或在安全链接和非安全链接中使用非标端口。你必须设置非安全门户URL前缀或安全门户URL前缀。如果不是这种情况下的,将强烈建议设置门户URL前缀。这样可以避免服务器对每次请求都做URL前缀处理。
示例
<portal-url-prefix>
http://localhost:8080/stringbeans
</portal-url-prefix>
<portal-secure-url-prefix>
安全套接字支持,如果使用了非标准端口在非安全或安全URL上,你必须这个标记属性的值。如果不是这种情况下的,将强烈建议设置门户URL前缀。这样可以避免服务器对每次请求都做URL前缀处理。
示例
<portal-secure-url-prefix>
https://localhost:8443/stringbeans
</portal-secure-url-prefix>
<default-data-source>
标识全部数据源的JNDI名称。该数据源名将被用于当默认组件需要访问数据库时使用。默认数据源必须是data-source列表成员之一。
示例
<default-data-source>
java:comp/env/jdbc/stringbeansdb
</default-data-source>
<data-sources>
可用JNDI数据源列表
Specific Tags
Tag | 描述 | ||||
data-source | 每个数据源需要以下属性:
|
示例
<data-sources>
<data-source name="java:comp/env/jdbc/stringbeansdb"
label="Stringbeans data source" />
<data-source name="java:comp/env/jdbc/sbtourdb"
label="Stringbeans tour data source" />
</data-sources>
<local-data-sources>
每一咱出瑞在<data-source>中的数据源必须在<local-data-sources>标签中配置。你必须正确的配置以下属性。有三个stringbeans默认定义的属性。没有必要对同一数据库配置所有的数据源。
Specific Tags
Tag | 描述 | ||||||||||
Local-data-source | 每一个数据源需要配置以下属性:
|
示例 – 默认 Hypersonic 数据库 (in process / standalone mode)
<local-data-sources>
<data-source name="java:comp/env/jdbc/stringbeansdb"
driver-class-name="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:${webappRoot}/WEB-INF/db/SBDB"
user-name="sa"
password="" />
<data-source name="java:comp/env/jdbc/sbtourdb"
driver-class-name="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:${webappRoot}/WEB-INF/db/SBDB"
user-name="sa"
password="" />
<data-source name="java:comp/env/jdbc/inmemorydb"
driver-class-name="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:."
user-name="sa"
password="" />
</local-data-sources>
示例 - MySQL Database
<local-data-sources>
<data-source name="java:comp/env/jdbc/stringbeansdb"
driver-class-name="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost/SBDB"
user-name="root"
password="" />
<data-source name="java:comp/env/jdbc/sbtourdb"
driver-class-name="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost/SBDB"
user-name="root"
password="" />
<data-source name="java:comp/env/jdbc/inmemorydb"
driver-class-name="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:."
user-name="sa"
password="" />
</local-data-sources>
示例 - SAPDB Database
<local-data-sources>
<data-sourcename="java:comp/env/jdbc/stringbeansdb"
driver-class-name="com.sap.dbtech.jdbc.DriverSapDB"
url="jdbc:sapdb:SBDB"
user-name="sa"
password="" />
<data-sourcename="java:comp/env/jdbc/sbtourdb"
driver-class-name="com.sap.dbtech.jdbc.DriverSapDB"
url="jdbc:sapdb:SBDB"
user-name="sa"
password="" />
<data-sourcename="java:comp/env/jdbc/inmemorydb"
driver-class-name="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:."
user-name="sa"
password="" />
</local-data-sources>
示例 - PostgreSQL Database
<local-data-sources>
<data-sourcename="java:comp/env/jdbc/stringbeansdb"
driver-class-name="org.postgresql.Driver"
url="jdbc:postgresql://localhost/SBDB"
user-name="sa"
password="" />
<data-sourcename="java:comp/env/jdbc/sbtourdb"
driver-class-name="org.postgresql.Driver"
url="jdbc:postgresql://localhost/SBDB"
user-name="sa"
password="" />
<data-sourcename="java:comp/env/jdbc/inmemorydb"
driver-class-name="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:."
user-name="sa"
password=""/>
</local-data-sources>
<not-found-portlet>
用户定义的门户组件未找到,将显示该组件(值是该组件的名字)。
注意:
该组件必须在portlet.xml 文件中有定义
<user-info-mapping>
门户组件程序经常要维护用户信息(包括像电话号码,电子邮件,邮箱地址等),像这种信息可以在门户容器内部署一个可不变的视图。该Map可以获取请求属性名通过javax.portlet.PortletRequest.USER_INFO 常量。Stringbeans假定实现这些信息实现并存储在数据库中以用户的ID做为主键
user-info-mapping 标签定义了表与用户信息属性的映射。
具体标签
Tag | 描述 |
sql | 必选.提供SQL字符串从数据库中查询用户属性 |
attributes | 必填。通过逗号分隔属性名,匹配用户信息表中的列。Sal查询的列名要与该属性列出来的属性名保持一致。 |
示例
<user-info-mapping>
<sql>SELECT fname, lname, ophone, oemail
FROMSB_USERS WHERE userid = ?</sql>
<attributes>user.name.given,
user.name.family,
user.business-info.telecom.telephone.number,
user.business-info.online.email
</attributes>
</user-info-mapping>
<interceptors>
Stringbeans 允许用户定义拦截器栈,它们将会在用户访问门户组件时出发。每一个拦截器被定义为interceptors的子元素。每一个拦截器元素通过子元素标识实现类。Stringbeans 提供了两个实现它们被用于日志组件的访问。
Portlet Hit File Logger Interceptor
Java类
com.nabhinc.portal.interceptor.PortletHitFileLogger
描述
日志拦截器将记录访问/触发事件到文件,文件以.log为后缀名。默认保存在<stringbeans-webapp-root>/WEB-INF/logs/portlet目录
每天建立一个新文件。每行上的一条记录以逗号分隔。默认的日志参数是和数据库日志一样。
logger: timestamp, event-type, portlet-name, client or user-id, client's IP or remote-address, client's host-name or remote-host respectively. 可用的数据类型有: 0 ==> 成功访问successful access 1 ==> 访问被拒,因为组件需要安全访问 2 ==> 权限被拒 3 ==> 组件不可用 4 ==> 内部访问检查错误 5 ==> 组件异常 6 ==> 系统异常
具体标签
Tag | 描述 |
log-dir | 指定Stringbeans相对路径. 默认是 WEB-INF/logs/portlet. 可选 |
logged-params | 用逗号分隔的日志参数,提供的参数用timestamp,event-type, portlet-name, user-id, remote-address and remote-host。至少需要添加一个参数。如果示识该标记,则默认的值会在上面的注释中有所说明。可选 |
示例
<interceptor >
<name>Portlet Access FileLogger</name>
<class>com.nabhinc.portal.interceptor.PortletHitFileLogger</class>
<log-dir>WEB-INF/logs/portlet</log-dir>
<logged-params>
timestamp,portlet-name,user-id,remote-host,remote-address
</logged-params>
</interceptor>
Portlet Hit DB Logger Interceptor
Java 类
com.nabhinc.portal.interceptor.PortletHitDBLogger
描述
拦截器将访问/触发的日志信息保存至数据库中。与PortletHitFileLogger 仅有小小的不一样就是存储介质不一样。
默认的日志参数和文件日志一样: timestamp, event-type, portlet-name, client or user-id, client's IP or remote-address, client's host-name or remote-host respectively. The available event typesare: 0 ==> 成功访问successful access 1 ==> 访问被拒,因为组件需要安全访问 2 ==> 权限被拒 3 ==> 组件不可用 4 ==> 内部访问检查错误 5 ==> 组件异常 6 ==> 系统异常
Specific Tags
Tag | 描述 |
data-source | 数据库的JNDI全限定名。如果没写该标记则使用默认数据库名。 可选. |
sql | 如果该元素没写,将记录默认的日志参数到SB_ACCESS_LOGS表中。通过访问默认的数据源。注意列的顺序要和日志参数的顺序一致。可选 |
logged-params | 用逗号分隔的日志参数,提供的参数用timestamp,event-type, portlet-name, user-id, remote-address and remote-host。至少需要添加一个参数。如果示识该标记,则默认的值会在上面的注释中有所说明。可选 |
示例
<interceptor >
<name>Portlet Access DatabaseLogger</name>
<class>com.nabhinc.portal.interceptor.PortletHitDBLogger</class>
<data-source>java:comp/env/jdbc/stringbeansdb</data-source>
<sql>INSERT INTO SB_ACCESS_LOGS (
acctime,pname, userid) VALUES(?,?,?)</sql>
<logged-params>timestamp,portlet-name,user-id</logged-params>
</interceptor>
<login-interceptors>
每一个登录拦截器被做为子元素标识在<login-interceptors>标签中。登录拦截器决定怎样记录用户登录登出事件日志。日志类通过子标签标识。当前版本提供两种日志实现类。:
Login File Logger Interceptor
Java 类
com.nabhinc.portal.interceptor.LoginFileLogger
描述
拦截器记录日志到文件,以userac前缀,以.log做为扩展名。默认保存路径是 <stringbeans-webapp-root>/WEB-INF/logs/user目录。每日新建一个日志文件。每行的日志信息以逗号分隔。默认参数和数据库日志一致:timestamp, event-type, session-id, client or user-id, client's IP or remote-address, client's host-name or remote-host。可用日志类型
0 : 登录, 1 : 会话过期, 2 : 明确登出.
详细标签
Tag | 描述 |
log-dir | 指定日志存放路径,默认为 WEB-INF/logs/user. |
logged-params | 逗号分隔,支持的参数有: timestamp,event-type, session-id, user-id, remote-address and remote-host。如果出现该标签至少有一个参数被使用 |
示例
<login-interceptor>
<name>Login FileLogger</name>
<class>com.nabhinc.portal.interceptor.LoginFileLogger</class>
<log-dir>WEB-INF/logs/user</log-dir>
<logged-params>timestamp,session-id,user-id,
remote-host,remote-address</logged-params>
</login-interceptor>
Login DB Logger Interceptor
Java 类
com.nabhinc.portal.interceptor.LoginDBLogger
描述
登录登出事件将保存到数据库,与andLoginFileLogger 唯一不同的地方就是存储的媒介不一样。默认使用参数: timestamp, event-type, session-id, client or user-id, client's IP or remote-address, client's host-name or remote-host. 可用的事件日志类型: 0 : 登录, 1 : 会话过期, 2 : 明确登出.
Specific Tags
Tag | 描述 |
data-source | 数据库的JNDI全限定名。如果没写该标记则使用默认数据库名。 可选.. |
sql | 如果该元素没写,将记录默认的日志参数到SB_LOGIN_LOGS表中。通过访问默认的数据源。注意列的顺序要和日志参数的顺序一致。
|
logged-params | 用逗号分隔的日志参数,提供的参数用timestamp,event-type, portlet-name, user-id, remote-address and remote-host。至少需要添加一个参数。如果示识该标记,则默认的值会在上面的注释中有所说明。 . |
示例
<login-interceptor>
<name>Login DatabaseLogger</name>
<class>com.nabhinc.portal.interceptor.LoginDBLogger</class>
<sql>INSERT INTO SB_LOGIN_LOGS (
acctime,userid,session-id) VALUES (?,?,?)</sql>
<logged-params>timestamp,user-id,session-id</logged-params>
</login-interceptor>
<user-config-stores>
每个用户都可以定制自己的布局及自己的配置存储,根据user-config-manager标签来定义存储方式。存储的名称定义必须唯一。当前版本提供了两种用户配置存储实现类:
用户配置存储于文件
Java 类
com.nabhinc.portal.uconfig.FileUserConfigStore
描述
用户配置保存到文件.为每个用户创建唯一的文件名,以unsername.xml形式命名并保存在配置文件夹中.默认的文件配置将会被存储到 <stringbeans-webapp-root>/WEB-INF/users目录。使用config-dir标签可以定义到不同的目录下 示例, 用户的user-id: test, 则test.xml 将在stringbeans 上下文中标识在config-dir中
标签
Tag | 描述 |
name | 用户配置存储的名称(唯一)必填 |
config-dir | 批定stringbeans上下文路径,文件将存储于此. 默认是 <stringbeans-webapp-root>/WEB-INF/users。可选 |
示例
<user-config-store>
<name>file</name>
<class>com.nabhinc.portal.uconfig.FileUserConfigStore</class>
</user-config-store>
用户配置存于数据库
Java 类
com.nabhinc.portal.interceptor.DBUserConfigStore
描述
标记说明
Tag | 描述 |
name | 用户配置名称,名称必须是唯一的。必选 |
data-source | Servlet容器配置信息中定义的JNDI全限定名。如没写该标记,将使用默认的数据源名称。可选 |
insert-sql | 插入用户配置信息到数据库表中。默认为 "INSERT INTO SB_USER_CONFIGS (name, userconfig) VALUES (?,?)" |
update-sql | 更新用户配置信息命令。默认为"UPDATE SB_USER_CONFIGS SET userconfig = ? WHERE name = ?" |
check-sql | 检查用户配置信息的SQL命令,默认为"SELECT name FROM SB_USER_CONFIGS WHERE name = ?" |
restore-sql | 恢复用户配置信息命令,默认为"SELECT userconfig FROM SB_USER_CONFIGS WHERE name = ?" |
count-sql | 计算用户配置数量,默认为"SELECT COUNT(*) FROM SB_USER_CONFIGS" |
user-config-dir | 标识stringbeans上下文环境的相对路径。默认为WEB-INF/users. |
示例
<user-config-store>
<name>DBStore</name>
<class>com.nabhinc.portal.uconfig.DBUserConfigStore</class>
</user-config-store>
<user-config-manager>
该元素标识配置管理实现类和类的依赖关系。该配置管理类的职责是为每个用户生成视图。类的名字是使用子元素标识的。当前提供的配置管理实现如下:
Simple User Configuration Manager
Java 类
com.nabhinc.portal.uconfig.SimpleUserConfigManager
描述
简单用户配置管理器,存储用户到特殊的存储名称标记。默认模板标为新用户标识了初始布局。
注意:
o The <default template name >.xml文件必须存在,并在用户创建之前进行配置。以下提供了了一个模板default-template.xml
标记
Tag | 描述 |
store-name | 标识存储名称。该名称必须是在user-config-stores中定义的。必选 |
default-template | 标识默认模板名称,如果没有使用。默认为名称为login-template.注意:<default template name>.xml必须存在并配置。 |
示例
<user-config-manager >
<class>com.nabhinc.portal.uconfig.SimpleUserConfigManager</class>
<store-name>file</store-name>
<default-template>default-template</default-template>
</user-config-manager>
示例 default.xml
<user-config>
<lf-theme>bee</lf-theme>
<refresh-seconds>-1</refresh-seconds>
<default-page-index>0</default-page-index>
<portal-layout>
<tab label="Home"layout-class="com.nabhinc.portal.core.GridLayout">
<layout>
<columnwidth="230">
<portlet-info name="TestPortlet" show-title="true"
border-width="1">
<portlet-preferences>
</portlet-preferences>
</portlet-info>
</column>
<columnwidth="470">
<portlet-info name="TestPortlet" show-title="true"
border-width="1" >
<portlet-preferences>
</portlet-preferences>
</portlet-info>
</column>
</layout>
</tab>
</portal-layout>
</user-config>
模板用户配置管理
Java 类
com.nabhinc.portal.uconfig.TemplateUserConfigManager
描述
所有用户将有一样的布局配置,只要定义模板文件,通过在<config-dir>目录中添加模板文件。
详细
Tag | 描述 |
store-name | 标识存储的文件名。文件名必须在user-config-stores中定义。必埴 |
template-name | 标识模板文件名 (模板必须存在). 必填. |
示例
<user-config-manager>
<class>com.nabhinc.portal.uconfig.TemplateUserConfigManager</class>
<store-name>file</store-name>
<template-name>no-user-template.xml</template-name>
</user-config-manager>
基于规则的用户配置管理
Java 类
com.nabhinc.portal.uconfig.RuleBasedUserConfigManager
描述
该类提供了基于不同用户,角色或它们之前的关系生成不同布局和视图的能力。该配置依照一条或多条规则元素。每个规则是通过pre-condition和config-creator元素。基于这些规则类的使用。标记参数可能需要<pre-condition>标签。详情请参考预定义规则部分。
Config-creator元素标识用户配置管理被用来管理的用户。详情请参考用户配置管理部分
RuleBasedUserConfigManager 通过使用UserConfigManager查找第一条规则来生成门户视图。该规则满足预定义条件。
详细标记
Tag | 描述 | ||||
store-name | 标识使用的存储名称。这个名称必须是在user-config-stores中定义的 必填 | ||||
rules | 根元素下定义的规则元素。至少要有一个规则说明。 | ||||
rule | 每个规则定义的pre-condition和configcreator
|
示例
<user-config-manager >
<class>
com.nabhinc.portal.uconfig.RuleBasedUserConfigManager
</class>
<store-name>file</store-name>
<rules>
<rule>
<pre-condition>
<class>
com.nabhinc.rules.PositiveRolePrecondition
</class>
<roles>sb-template</roles>
</pre-condition>
<user-config-manager>
<class>
com.nabhinc.portal.uconfig.SimpleUserConfigManager
</class>
<store-name>file</store-name>
<default-template>default-template</default-template>
</user-config-manager>
</rule>
<rule>
<pre-condition>
<class>com.nabhinc.rules.UserPrecondition</class>
<users>sbtour</users>
</pre-condition>
<user-config-manager>
<class>
com.nabhinc.portal.uconfig.TemplateUserConfigManager
</class>
<template-name>sbtour-template</template-name>
<store-name>file</store-name>
</user-config-manager>
</rule>
</rules>
</user-config-manager>
<access-controller>
通过该元素可以用来控制用户授权或禁止访问门户资源。这种访问授权可以不使用任何过滤器和pre-condition规则或通过指定条件。在之前的版本中提供了两个实现将在下面进行描述:
Grant All Access Controller
Java 类
com.nabhinc.portal.ac.GrantAllAccessController
描述
授权可以访问所有资源
标记
无
示例
<access-controller >
<name>Grant All AccessController</name>
<class>com.nabhinc.portal.ac.GrantAllAccessController</class>
</access-controller>
基于规则的访问控制器
Java 类
com.nabhinc.portal.ac.RuleBasedAccessController
描述
基于pre-condition规则的特殊组件的强制访问控制
Enforces the access control to the specified portlets based on 。控制个别的访问行为(视图,编辑等)。Pre-condition必须满足对受保护的门户组件的授权和拒绝访问。如果没指定相应的行为,pre-condition将在指定的组件上执行所有的行为。
Specific Tags
Tag | 描述 |
ac-entry | 根元素,用于指定portlets,pre-condition, 和actions的根元素。 |
portlets | 指出需要访问的portlet或需要保护的门户组件。如果有多个组件可以使用逗号进行分隔。 |
pre-condition | 预定义条件必须适用于访问被保护组件。参考预定义规则需要指明可用类和元素参数 |
actions | 指明行为。例如 视图、编辑等访问控制需要基于指明的预置的条件规则。如果没有指明该元素。将依照预置条件规则对指定的组件执行所有的行为。 |
示例
<access-controller >
<name>Rule Based AccessController</name>
<class>com.nabhinc.portal.ac.RuleBasedAccessController</class>
<ac-entry>
<portlets>JVMInfo,Portlet Access DB Logs</portlets>
<pre-condition>
<class>com.nabhinc.rules.PositiveRolePrecondition</class>
<roles>sb-admin</roles>
</pre-condition>
</ac-entry>
</access-controller>
<themes-dir>
标识主题目录。默认的主题目录是themes. 主题名必须定义在这个主题目录中。
<default-date-pattern>
标识默认使用的日期样式在start-date标签中。这个样式必须依据java的SimpleDateFormat类。如果没指定,默认为月/日/年
<start-date>
软件的创建日期,如果没有指定该标记,默认为程序第一次运行的时间。日期的格式必须依照default-date-pattern指明的类型
<send-username-password>
当用户请求重置用户密码可以使用该标记。如没有指明这个标记,密码将被发到用户邮箱中。
<remember-me>
如果标识这个标记,remember me复选框将会出现在登录组件上。Remember Me选项可以提供自动登录特性。直到用户点击退出或已经超过最大超时间。
<remember-username>
如果标识这个标记,remember username复选框将会出现在登录组件页面上。Remember username 提供了预填写用户名的特性
<default-page-width>
标识默认页面宽度,它将会被应用到所有页面。在page-layouts配置中设置将会覆盖该值。宽度可以是像素或百分比(如果使用百分比需要写百分号)。
例: <default-page-width>100%<default-page-width>
<page-layouts>
在该元素中可以指定一个或多个布局。每一个布局定义了类型,名称,标签,列宽,页面宽度(可选)stringbeans提供了三个基本类型的布局:单独(整页面),菜单(左边有导航栏),列类型布局。基于这三种基本类型,stringbeans定义了5种页面布局(你可以改变列宽或添加更多的布局。这些布局的名称必须是唯一的)
标记
Tag | 描述 |
layout | 定义每一个布局都要以layout开始,每一个布局都要有name,label,type,column-width,和page-width。在layout中指明页面的宽度将覆盖默认的页面宽度 |
label | 选中时显示的宽度 |
name | 布局名称,必须是唯一的。必选项 |
type | 布局类型,支持的布局类型有:
|
column-widths | 指定列宽,使用百分比(要指定%号)或像素。如果要指明多列宽度使用逗号隔开。
|
page-width | 可选项,指定页面的宽度。如果没有指定将使用default-page-width设置的宽度。 |
示例
<page-layouts>
<layout>
<name>grid1</name>
<label>Two Columns(W-N)</label>
<column-widths>100%,165</column-widths>
<type>column</type>
<page-width>100%</page-width>
</layout>
<layout>
<name>menu</name>
<label>MenuLayout</label>
<column-widths>165,100%</column-widths>
<type>menu</type>
<page-width>700</page-width>
</layout>
<layout>
<name>single-portlet</name>
<label>Single Portlet</label>
<column-widths>100%</column-widths>
<type>single</type>
<page-width>700</page-width>
</layout>
</page-layouts>
<allow-self-registration />
如果标识这个空标记,则用户可以在登录组件上提供用户注册的链接。自注册处理需要要有效的电子邮箱验证来成功注册。新用户将会在邮箱中收到登录密码。
注意:
o 发送邮件需要 SMTP支持。如果本地没有SMTP服务。你必须在java系统属性里设置SMTP主机值
例如:mail.smtp.host = mail server IP 或主机名。另外你的邮件服务器必须允许stringbeans 发送邮件
<portal-admin-email>
门户管理邮箱用来发送确认信息邮件,当用户通过登录页面上的注册链接进行注册时。默认值是stringbeans.admin@nabhinc.com
<support-secure-connection />
标识该标记。安全连接图标将显示在图标条上。注意,要提供SSL,还需要配置web和应用服务器。详情参见SSL 安装
<encrypt-password />
如果该标记有效,密码将在保存到数据库之前做加密处理。密码加密使用的是MD5算法。如果你禁止或启用该元素,你必须重置数据库的用户密码。
<wide-portlets>
标识用逗号分隔的组件。这些组件将不在窄列中显示
示例
<wide-portlets>JVVInfo, OnlineUsers,UserAdmin </wide-portlets>
<online-user-table-name>
维护在线用户列表在内存中。默认的表名为IM_ACTIVE_SESSIONS
示例
<online-user-table-name>IM_ACTIVE_SESSIONS</online-user-table-name>
<session-timeout-interval>
请求无效的间隔时间,以分钟为单位,超过该时间隔的客户端请求,用户会话将被视为无效。默认值是0,它说明应用程序将使用默认的超时时间间隔。负值表示session永远不过期。
示例
<session-timeout-interval>0</session-timeout-interval>
<default-locale>
标识默认的语言。
Lang属性的值必须是ISO639中定义的有效的双字符小写字串。该代码代表语言的名称
Country属性必须是在ISO3166中定义的双字符大写字串的国家代码
示例
<default-locale lang="en" country="US" />
<supported-locales>
列出你要支持的语言类型。每一种语言被定义在子元素local中并包含属性label,lang和country。
指明标记
Tag | 描述 | ||||||
locale | 通过属性说明指定的语言:
|
示例
<supported-locales>
<locale label="German" lang="de" />
<locale label="US English" lang="en"country="US" />
</supported-locales>
<portal-apps>
Stringbeans提供了门户应用(portal applications)支持,它是通过上下文在合适的组件窗口渲染。例:一个项目管理程序将被展现在准备好的页面上用来说明项目。”portal-apps”包含一系列的”portal-app”字元素,每一个元素对应一个应用程序。每个子元素必须至少包括两个子元素:name和user-config-manager。Name指明应用程序名称。User-config-manager元素管理生成视图的类。另外portal-app可能还会有id-param,name-param,display-name-as-tite和title-prefix子元素。这些将在为应用程序上下文的请求参数。在为项目管理程序,它也许会有标识项目的project_id和project_name用来区分项目和项目名称。如果使用display-name-as-title元素。则name-param请求参数是显示页面标题。如果title-prefix元素被标识,标题被预指定为为元素体内文本的内容。
示例
<portal-app>
<name>edit_profile</name>
<user-config-manager>
<class>
com.nabhinc.portal.uconfig.TemplateUserConfigManager
</class>
<config-dir>WEB-INF/users</config-dir>
<template-name>eprofile</template-name>
</user-config-manager>
</portal-app>
规则
规则定义的条件将满足请求的请允许和禁止。在当前版本中提供了13条预定义条件的实现。
“与”处理
Java 类
com.nabhinc.rules.AndPrecondition
描述
“与”预定义规则,必须满足所有指明的规则
标记
无
示例
<rule>
<pre-condition>
<class>com.nabhinc.rules.AndPrecondition</class>
<pre-condition>
<class>com.nabhinc.rules.PositiveRolePrecondition</class>
<roles>sb-admin</roles>
</pre-condition>
<pre-condition>
<class>com.nabhinc.rules.PositiveRemoteHostPrecondition</class>
<addresses>localhost</addresses>
</pre-condition>
</pre-condition>
</rule>
比较处理
Java 类
com.nabhinc.rules.ComparisonPrecondition
描述
该预置条件会将数据库查询结果(例如结果行数)与指定的结果做operator指定的比较
Specific Tags
Tag | 描述 |
data-source | Servlet容器中指定的JNDI全限定名.必填. |
sql | SQL查询用来获取结果,从数据的查询结果数。 |
operator | 与查询结果进行比较的比较操作符: less-than, greater-than, equal, not-equal, greater-than-or-equal, less-than-or-equal. |
compare-to | 与查询结果比较的数 |
示例
<rule>
<pre-condition>
<data-source>java:comp/env/jdbc/stringbeansdb</data-source>
<sql>SELECT COUNT(*)FROM SB_STUDENTS WHERE GRADE>7</sql>
<operator>equal</operator>
<compare-to>100</compare-to>
</pre-condition>
</rule>
禁止远程地址
Java 类
com.nabhinc.rules.NegativeRemoteAddressPrecondition
描述
该条件满足当请求的IP不是标记指明的IP地址
标记
Tag | 描述 |
addresses | 客户端IP将被拒绝访问。如查有多个IP地址需要标识,使用逗事情分隔 |
示例
<rule>
<pre-condition>
<class>com.nabhinc.rules.NegativeRemoteAddressPrecondition</class>
<addresses>67.88.88.103, 192.168.254.253</addresses>
</pre-condition>
</rule>
禁止远程主机
Java 类
com.nabhinc.rules.NegativeRemoteHostPrecondition
描述
该条件满足当请求主名不在该标识中可以访问
标记
Tag | 描述 |
addresses | 标识的客户主机名将被拒绝访问。多于一个的主机名,将用逗号隔开。 |
示例
<rule>
<pre-condition>
<class>com.nabhinc.rules.NegativeRemoteHostPrecondition</class>
<addresses>spamhost.com, justhost.com</addresses>
</pre-condition>
</rule>
禁止角色
Java 类
com.nabhinc.rules.NegativeRolePrecondition
描述
列表中列出来的角色是不满足预置条件规则的。如果一个或多个用户需要排除,标记用户这些用户到users元素中
元素
Tag | 描述 |
roles | 角色将被拒绝访问。使用逗号可以分隔多个角色。 |
users | 排除指定角色下的用户,使用逗号分隔多个用户 |
示例
<rule>
<pre-condition>
<class>com.nabhinc.rules.NegativeRolePrecondition</class>
<roles>sb-guest</roles>
<users>guest</users>
</pre-condition>
</rule>
“非”运算
Java 类
com.nabhinc.rules.NotPrecondition
描述
不包含条件运算规则
标签
无
示例
<rule>
<pre-condition>
<class>com.nabhinc.rules.NotPrecondition</class>
</pre-condition>
</rule>
“或”运算
Java 类
com.nabhinc.rules.OrPrecondition
描述
或运算.使用该条件,仅需要一个(或多个)满足条件,则可以通过验证。
标记
无
示例
<rule>
<pre-condition>
<class>com.nabhinc.rules.OrPrecondition</class>
<pre-condition>
<class>com.nabhinc.rules.PositiveRolePrecondition</class>
<roles>sb-admin</roles>
</pre-condition>
<pre-condition>
<class>com.nabhinc.rules.UserPrecondition</class>
<users>foo</users>
</pre-condition>
</pre-condition>
</rule>
允许远程地址
Java 类
com.nabhinc.rules.PositiveRemoteAddressPrecondition
描述
满足条件是当请求的地址在在该标记中标识
标签
Tag | 描述 |
addresses | 满足条件的地址,多于一个的用逗号隔开。 |
示例
<rule>
<pre-condition>
<class>com.nabhinc.rules.PositiveRemoteAddressPrecondition</class>
<addresses>127.0.0.1, 192.168.0.0</addresses>
</pre-condition>
</rule>
满足条件的远程主机
Java 类
com.nabhinc.rules.PositiveRemoteHostPrecondition
描述
请求的主机名在列表中标识,则满足条件。
.
标记
Tag | 描述 |
addresses | 满足条件的主机名. |
示例
<rule>
<pre-condition>
<class>com.nabhinc.rules.PositiveRemoteHostPrecondition</class>
<addresses>localhost,anyhost.com</addresses>
</pre-condition>
</rule>
允许用户条件
Java 类
com.nabhinc.rules.PositiveRolePrecondition
条件
当请求用户来自标识的角色则满足条件。然而,如果出现users元素 ,则意味着没有包含进来的用户将不满足条件。
标记
Tag | 描述 |
roles | 标识角色,多个角色名要使用逗号分隔 |
users | 标识满足条件的指定角色下的用户名,多用户名用逗号隔开。 |
示例
<rule>
<pre-condition>
<class>com.nabhinc.rules.PositiveRolePrecondition</class>
<roles>sb-user</roles>
<users>sbtour</users>
</pre-condition>
</rule>
关系运算
Java 类
com.nabhinc.rules.RelationPrecondition
描述
标记
Tag | 描述 |
data-source | Servlet容器下配置的JNDI全限定名。如果该元素没指定则使用默认数据源名。 |
sql | 查询SQL语句从用户相关表中测试用户是否存在。 |
示例
<rule>
<pre-condition>
<class>com.nabhinc.rules.RelationPrecondition</class>
<data-source>java:comp/env/jdbc/stringbeansdb</data-source>
<sql>
SELECT * FROMSB_PROJECT_USERS WHERE projectid=1 AND userid=?
</sql>
</pre-condition>
</rule>
True Precondition
Java 类
com.nabhinc.rules.TruePrecondition
描述
预置条件将满足所有的请求。通常被用在最后一个条件。类似于 else
标签
无
示例
<rule>
<pre-condition>
<class>com.nabhinc.rules.TruePrecondition</class>
</pre-condition>
</rule>
用户条件
Java 类
com.nabhinc.rules.UserPrecondition
描述
标识的用户将满足条件,除非标记空的negative标签
标记
Tag | 描述 |
users | 默认情况,标识的用户将满足条件,除非标识空的negative元素 多个用户用逗号分隔。 |
negative | 标记空标签 negative 预示着不允许。标识的用户将不满足条件。 |
示例
<rule>
<pre-condition>
<class>com.nabhinc.rules.UserPrecondition</class>
<users>sbtour</users>
<negative />
</pre-condition>
</rule>
门户组件
门户组件是用来生成关于指定主题或功能内容的HTML或WML对象。例如,在某些话题组件中生成一个新闻头条组件,或者在呈现报表数据组件中显示图表等。当前Stringbeans默认的组件类型有 Chart, File, JSP, JVM Info,Report, RSS, Table and XSL portlets。将来这些组件可能会分发到不同的版本中。此外,MVCPorlet框架已经包含在2.1版本中
Chart Portlet
Java 类
com.nabhinc.portlet.chart.ChartPortlet
描述
以多种图表来显示报表数据,包含饼图,条形图,栈图,线图,烛柱图等。当前的图表组件支持的数据可以来自于数据库(JDBC)或用户指定的 xml文件。
组件标签
初始化参数 | 描述 |
dataSource | Servlet容器下配置的JNDI全限定名。如果该元素没指定则使用默认数据源名。 |
dataSourceSQL | 该元素设置需要数据源类JDBC类型的数据组件支持。使用分组或排序的查询命令 |
xmlDocRelativePath | 该元素需要以xml类型做为数据源。 标识xml 文件的相对路径(在stringbeans根路径上下文内),路径是以”/”开始。 |
dataSourceClass | 使用的图形数据组件类。它依赖于数据源和图表类型,当前支持的数据组件有JDBCCategoryDataset / XMLCategoryDataset: 这两种数据源支持以下图类型line, horizontal-bar, vertical-bar, stacked-horizontal-bar and stacked-vertical-bar JDBCHighLowDataset: 烛柱图类型. JDBCPieDataset / XMLPieDataset: JDBC源和XML源用来支持 pie and pie-3d chart 类型。 |
helpPage | 帮助路径. |
chartType | 支持的图类型: line, pie, horizontal-bar, horizontal-bar-3d, scatter, pie3d, stacked-horizontal-bar, stacked-vertical-bar, stacked-vertical-bar-3d, vertical-bar, vertical-bar-3d, and candlestick. |
chartTitle | 图标题 |
xAxisTitle | 图表的x轴别名 |
yAxisTitle | 图表的y轴别名 |
chartAspectRatio | 图表的宽高比,默认是1 |
showLegend | 图例名 |
chartColors | 逗号分隔的图表颜色名称,颜色名称是在java.awt.Color中定义的静态常量或RGB十六进制值要以”#”开头 |
chart-bg | 图表背景颜色名称,该名称是在java.awt.Color中定义的静态常量 |
portletWidthAttribute | 这个属性用来保存组件宽度,默认是com.nabhinc.portal.portlet_width |
normalChartWidth | 标识图表的正常宽度。默认是200 |
normalChartHeight | 标识图表的正常高度。默认是200 |
maximizedChartWidth | 标识图表的最大宽度。默认是700 |
maximizedChartHeight | 标识图表的最大高度。默认是700 |
borderColor | 边框颜色。该颜色名称是在java.awt.Color中定义的静态常量 |
imageType | 图形类型。支持:jpeg,JPG,和PNG JPG |
bgImageURL | 背景图链接 |
bgImageFile | 背景图文件名,如果bgImageURL 中没指文件名. |
bgImagePath | 背景图路径,如果bgImageURL 没有指定. |
bgImageAlpha | 背景图透明度 |
bgAlpha | 标识背景色透明度 |
fgAlpha | 标识前景色透明度. |
hideLegend | 该空标记指示将不显示图例 |
pieChartShape | 标识饼图的类型形状类型 circular和oval默认是圆。 |
pieLabelType | 标识饼图标签类型提供的标签类型有:percent, name, value, name-value, name-percent, value-percent or none |
pieDepthFactor | 标识饼图的pie or pie-3d图类型, Specific to chart type. Specifies the |
pieGap | 标识饼图之间的缝隙 |
示例
<portlet>
<description>StudentDistribution in Pie 3D chart</description>
<portlet-name>Student Distribution</portlet-name>
<portlet-class>com.nabhinc.portlet.chart.ChartPortlet</portlet-class>
<init-param>
<name>helpPage</name>
<value>/portlets/chart/chart_help.jsp</value>
</init-param>
<init-param>
<name>dataSource</name>
<value>jdbc/sbtourdb</value>
</init-param>
<init-param>
<name>dataSourceSQL</name>
<value>
SELECT grade,COUNT(*) FROM STUDENT GROUP BY grade ORDER BY grade>
</value>
</init-param>
<init-param>
<name>dataSourceClass</name>
<value>com.nabhinc.portlet.chart.JDBCPieDataset</value>
</init-param>
<init-param>
<name>chartTitle</name>
<value>StudentDistribution</value>
</init-param>
<init-param>
<name>chartType</name>
<value>pie3d</value>
</init-param>
<init-param>
<name>chartAspectRatio</name>
<value>1</value>
</init-param>
<init-param>
<name>pieLabelType</name>
<value>name</value>
</init-param>
<init-param>
<name>chartColors</name>
<value>#00ff00, #ff0000, #0000ff</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>HELP</portlet-mode>
<portlet-mode>EDIT</portlet-mode>
</supports>
<portlet-info>
<title>JDBC Pie 3D ChartDemo</title>
<keywords>Charts, Samples</keywords>
</portlet-info>
</portlet>
File Portlet
Java 类
com.nabhinc.portlet.file.FilePortlet
描述
文件组件提供了一个文件的服务内容。该文件必须能能过配置上下文在本地或远程定位到。相对路径必须以“/”开始
该组件会缓存文件内容在服务启动时,在发送内容之前,它必须检查该文件是否被修改较新于缓存文件。如果文件被修改,那么缓存将被刷新(重新加载文件)。当支持XHTML-MP或(和)WML支持时可以使用用效的XHTML-MP或(和)WML文件
组件标签
初始化参数 | 描述 |
filePath | 标识文件在stringbeans上下文中的加载路径。使用相对路径将以”/”开始 例如 /portlets/file/search.html. |
htmlFilePath | 标识文件加载的相对路径 路径以 "/"开始, 例如 /portlets/file/search.html. 该参数将被处理,即使也标识的filePath参数 无论是filePath 或 htmlFilePath 都是必填的 |
xhtmlFilePath | 标识加载XHTML文档的相对路径。以“/”开始 例如 /portlets/file/search.xhtml. |
wmlFilePath | 标识加载WML文档的相对路径。路径以“/”开始
例如 /portlets/file/search.html.该参数不建议使用,设置htmlFilePath会更好一些. |
helpPage | 指定帮助文件路径路径以“/”开始 |
示例
<portlet>
<description>An 示例 of File Portlet</description>
<portlet-name>WelcomeMessage</portlet-name>
<portlet-class>com.nabhinc.portlet.file.FilePortlet</portlet-class>
<init-param>
<name>filePath</name>
<value>/portlets/file/samples/welcome.html</value>
</init-param>
<init-param>
<name>wmlFilePath</name>
<value>/portlets/file/samples/welcome.wml</value>
</init-param>
<init-param>
<name>helpPage</name>
<value>/portlets/file/file_help.jsp</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>HELP</portlet-mode>
</supports>
<supports>
<mime-type>text/vnd.wap.wml</mime-type>
</supports>
<portlet-info>
<title>Welcome</title>
<keywords>Welcome, File</keywords>
</portlet-info>
</portlet>
Inline Portlet
Java 类
com.nabhinc.portlet.inline.InlinePortlet
描述
简单的门户测试组件
组件标签
preference | 描述 |
content | 标识视图内容 |
help | 标识帮助内容 |
示例
<portlet>
<description>Inline Portlet, a test portlet.</description>
<portlet-name>TestPortlet</portlet-name>
<portlet-class>com.nabhinc.portlet.inline.InlinePortlet</portlet-class>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>HELPv/portlet-mode>
</supports>
<portlet-info>
<title>Test Portlet</title>
<keywords>Samples</keywords>
</portlet-info>
<portlet-preferences>
<preference>
<name>content</name>
<value>Thisis a test portlet.</value>
</preference>
<preference>
<name>help</name>
<value>A simple portlet used for illustrating authoringportlets.</value>
</preference>
</portlet-preferences>
</portlet>
JSP Portlet
Java 类
com.nabhinc.portlet.base.BasePortlet
描述
该组件将会请求一个jsp文件。在处理请求之前,它会试图配置属性值以备jsp生成动态输出时的请求对象使用。其它组件可以在另一个地方重用该jsp组件可能会添加不同的参数。以下的参数是所有jsp组件所技术的
组件标签
init-param | 描述 |
contentPage | 内容页面的相对路径.路径以"/"开始. |
editPage | 编辑页面的路径 路径以“/”开始. |
helpPage | 帮助文件路径 路径以“/”开始. |
示例
<portlet>
<description>Showtime portlet.</description>
<portlet-name>ShowTime</portlet-name>
<portlet-class>com.nabhinc.portlet.base.BasePortlet</portlet-class>
<expiration-cache>0</expiration-cache>
<init-param>
<name>contentPage</name>
<value>/portlets/jsp/content.jsp</value>
</init-param>
<init-param>
<name>editPage</name>
<value>/portlets/jsp/edit.jsp</value>
</init-param>
<init-param>
<name>helpPage</name>
<value>/portlets/jsp/help.jsp</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>HELP</portlet-mode>
<portlet-mode>EDIT</portlet-mode>
</supports>
<supports>
<mime-type>text/wml</mime-type>
<portlet-mode>HELP</portlet-mode>
<portlet-mode>EDIT</portlet-mode>
</supports>
<portlet-info>
<title>ShowTime Portlet</title>
<keywords>JSP</keywords>
</portlet-info>
<portlet-preferences>
</portlet-preferences>
</portlet>
Report Portlet
Java 类
com.nabhinc.portlet.report.ReportPortlet
描述
组件将生成数据库报表。报表组件可能获取数据是基于数据源和sql语句配置。该数据可以组织成任意数量的递归分组。数据将将展现在报表的顶部,底部和列中通过设置java表达式。另外数据的分页是必要的。
组件标签
init-param | 描述 |
dataSource | Servlet容器下配置的JNDI全限定名。如果该元素没指定则使用默认数据源名。 |
listSQL | 用于查询获取的数据 |
countSQL | 查询命令计算的总数据量 |
sectionName | 报表的节/分组 |
sectionHeader | 报表分组头 |
sectionFooter | 报表分组尾 |
sectionExpr | 分组表达式 |
headers | 逗号分隔的列名 |
columns | 逗号分隔的对应查询的列名。要与headers的数量匹配 |
columnExpr | 列表达式 |
reportHeader | 报表头. |
reportFooter | 报表尾 |
pageHeader | 页头,显示在每一个页面上。 |
pageFooter | 页尾,显示在每个页面上 |
startGroupOnNewPage | 空标记用来标记,标识报表分组是否开始于新的页面。rowsPerPage将被忽略。 |
emptyReportMessage | 元素体内提供html信息展现,如果报表包含空数据。默认信息为”This report is empty.” |
next | 下一页标签,默认是next. |
prev | 前一页标签,默认是Prev |
refresh | 刷新标签,默认是Refresh. |
editPage | 编辑页面路径. 路径以“/”开始. |
helpPage | 帮助页面路径 路径以“/”开始. |
属性 | 描述 |
rowsPerPage | 标识每一页最大行数. |
示例
<portlet>
<description>Areport showing overall student statistics.</description>
<portlet-name>StudentReport</portlet-name>
<portlet-class>com.nabhinc.portlet.report.ReportPortlet</portlet-class>
<init-param>
<name>editPage</name>
<value>/portlets/report/report_edit.jsp</value>
</init-param>
<init-param>
<name>helpPage</name>
<value>/portlets/report/report_help.jsp</value>
</init-param>
<init-param>
<name>dataSource</name>
<value>java:comp/env/jdbc/sbtourdb</value>
</init-param>
<init-param>
<name>listSQL</name>
<value>SELECTlname,fname,phone,email,grade
FROMSB_TOUR_STUDENTS ORDER BY grade,lname
</value>
</init-param>
<init-param>
<name>countSQL</name>
<value>SELECTCOUNT(*) FROM SB_TOUR_STUDENTS</value>
</init-param>
<init-param>
<name>sectionName0</name>
<value>gradeGroup</value>
</init-param>
<init-param>
<name>sectionHeader0</name>
<value>"Grade: " + gradeGroup</value>
</init-param>
<init-param>
<name>sectionFooter0</name>
<value>"Count: " + currentGroupSize</value>
</init-param>
<init-param>
<name>sectionExpr0</name>
<value>grade</value>
</init-param>
<init-param>
<name>headers</name>
<value>LastName,First Name,Phone,Email</value>
</init-param>
<init-param>
<name>columns</name>
<value>lname,fname,phone,email,grade</value>
</init-param>
<init-param>
<name>columnExpr0</name>
<value>lname</value>
</init-param>
<init-param>
<name>columnExpr1</name>
<value>fname</value>
</init-param>
<init-param>
<name>columnExpr2</name>
<value>phone== null ? "Not Available" : phone</value>
</init-param>
<init-param>
<name>columnExpr3</name>
<value>email== null ? "Not Available" : email</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>HELP</portlet-mode>
<portlet-mode>EDIT</portlet-mode>
</supports>
<portlet-info>
<title>StudentReport</title>
<keywords>Reports</keywords>
</portlet-info>
<portlet-preferences>
<preference>
<name>rowsPerPage</name>
<value>10</value>
</preference>
</portlet-preferences>
</portlet>
RSS / RDF Headlines Portlet
Java 类
com.nabhinc.portlet.rss.RSSPortlet
描述
RSS组件将展现头条内容其包含RSS或RDF资源。主要标记是URL用来指向包含头条信息的RSS文件。RSS/RDF将被缓存。缓存将定期更新,头条信息显示将被在maxItems标签中做限制。如果数据信息超过最大显示设置。则会显示more链接。
组件标签
初始化参数 | 描述 |
docURL | URL of the RSS / RDF file. |
editPage | 页面编辑路径。 路径以“/”开始. |
helpPage | 页面帮助路径。 路径以“/”开始. |
属性 | 描述 |
maxItems | The maximum items/headlines shown at a time. |
示例
<portlet>
<description>ASyndication Headlines news (RSS) from BBC.</description>
<portlet-name>BBCNews</portlet-name>
<portlet-class>com.nabhinc.portlet.rss.RSSPortlet</portlet-class>
<init-param>
<name>docURL</name>
<value>http://www.bbc.co.uk/syndication/feeds/news/rss091.xml</value>
</init-param>
<init-param>
<name>contentPage</name>
<value>/portlets/rss/rss_view.jsp</value>
</init-param>
<init-param>
<name>editPage</name>
<value>/portlets/rss/rss_edit.jsp</value>
</init-param>
<init-param>
<name>helpPage</name>
<value>/portlets/rss/rss_help.jsp</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>HELP</portlet-mode>
<portlet-mode>EDIT</portlet-mode>
</supports>
<portlet-info>
<title>BBCWorld News</title>
<keywords>News, RSS</keywords>
</portlet-info>
<portlet-preferences>
<preference>
<name>maxItems</name>
<value>5</value>
</preference>
</portlet-preferences>
</portlet>
Table Portlet
Java 类
com.nabhinc.portlet.table.TablePortlet
描述
表格组件将以表格的形式展现,典型的展现有,电子邮件,告警,任务等。列表数据直接从关系数据库通过SQL字符串查询。另外在表格中显示数据,组件为显示数据做如下配置。
· 列复选框。当选择表中的一行数据时,该动作可以触发SQL查询
· 在所有数据列上添加超链接。该配置批定一个基本URL,并给行中的数据添加索引。并命名查询参数附加到基本URL上。
· 根据列名排序的列按钮。
组件标签
初始化参数 | 描述 |
createPage | 创建页面的路径. |
createLabel | 创建按钮的标签. |
listSQL | 查询字符串. |
countSQL | 查询结果行数 |
actionSQL | 对删除和其它动作的Sql查询。 |
actionLabel | 动作按钮的标签. |
rowDisplayPage | 每页显示的行数 |
linkColumnIndex | 列索引链接. |
primaryKeyIndex | 主键列的索引号. |
primaryKeyType | 主键类型. |
columnNames | 列名(逗号分隔列表) |
columnFormats | 列格式 (逗号分隔). |
columnTypes | 列类型 (逗号分隔). |
rowStateColumnIndex | Column index row state. |
tableDisplayPage | 显示表格的页面. |
setIDPage | 设置页面编号 |
errorPage | 错误页面路径 |
includeName | 包含名称 |
imageFolder | 文件路径 |
searchLabel | 查找按钮的显示名称 |
searchPage | 查找页面 |
sortColumn | 默认按哪列排序. |
sortType | 升序或降序(Ascending or descending) |
insertUser | 结合SQL标记。它呈现在TablePortlet定义的实现中,在这个实现中,组件当从数据库中检索数据时,需要插入用户的ID到SQL查询中。 |
emptyTableMessage | 元素体内的HTML消息将被显示,如果表格要展现的portlet不包含数据。 |
insertParamName | 插入参数名 |
insertParamValue | 插入参数值 |
headers | 元素体内标识了表头名称是用逗号分隔的列表 |
dataSource | 元素体内标识的是关于表格的数据源名称。当JTA可用,则其内容是javax.sql.DataSource对象的JNDI名. |
linkIDParamName | 为参数添加链接ID |
linkNameParamName | 参数的链接名称 |
linkColumnIndex | 链接列索引 |
linkNewWindow | 新窗口链接 |
linkWindowHeight | 新窗口的高度 |
linkWindowWidth | 新窗口的宽度 |
editPage | 页面编辑路径。 路径以“/”开始. |
helpPage | 页面帮助路径。 路径以“/”开始. |
属性 | 描述 |
rowsPerPage | 每页数据行数. |
示例
<portlet>
<description>Potlet showing access logs recorded byDB.</description>
<portlet-name>Portlet Access DB Logs</portlet-name>
<portlet-class>com.nabhinc.portlet.table.TablePortlet</portlet-class>
<init-param>
<name>editPage</name>
<value>/portlets/logger/loggger_edit.jsp</value>
</init-param>
<init-param>
<name>helpPage</name>
<value>/portlets/logger/loggger_help.jsp</value>
</init-param>
<init-param>
<name>dataSource</name>
<value>java:comp/env/jdbc/stringbeansdb</value>
</init-param>
<init-param>
<name>listSQL</name>
<value>SELECTacctime,pname,userid,remotehost,remoteaddress
FROMSB_ACCESS_LOGS</value>
</init-param>
<init-param>
<name>countSQL</name>
<value>SELECTCOUNT(*) FROM SB_ACCESS_LOGS</value>
</init-param>
<init-param>
<name>emptyTableMessage</name>
<value>No logsrecorded.</value>
</init-param>
<init-param>
<name>sortColumn</name>
<value>acctime</value>
</init-param>
<init-param>
<name>columnNames</name>
<value>acctime,pname,userid,remotehost,remoteaddress</value>
</init-param>
<init-param>
<name>columnTypes</name>
<value>TIMESTAMP,VARCHAR,VARCHAR,VARCHAR,VARCHAR</value>
</init-param>
<init-param>
<name>columnFormats</name>
<value>EEE MMMd HH:mm:ss z yyyy,null,null,null,null</value>
</init-param>
<init-param>
<name>headers</name>
<value>
Access Time,Portlet Name, User ID, Remote Host, Remote Address
</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>HELP</portlet-mode>
<portlet-mode>EDIT</portlet-mode>
</supports>
<portlet-info>
<title>Hit DBLogger</title>
<keywords>Logs, Table</keywords>
</portlet-info>
<portlet-preferences>
<preference>
<name>rowsPerPage</name>
<value>25</value>
</preference>
</portlet-preferences>
</portlet>
URL Portlet
Java 类
com.nabhinc.portlet.url.URLPortlet
描述
URL组件类似于文件组件,除了将文件路径,规制成URL。它提供展现文件或文档。可以通过URL定位本地或远程文档。
该组件会缓存文件内容在服务启动时,在发送内容之前,它必须检查该文件是否被修改较新于缓存文件。如果文件被修改,那么缓存将被刷新(重新加载文件)。当支持XHTML-MP或(和)WML支持时可以使用用效的XHTML-MP或(和)WML文件。
组件标签
初始化参数 | 描述 |
URL | 指定文档的URL 例如 file:///home/portlets/file/search.html。 该参数不建议使用,最好用htmlURL代替。 |
htmlURL | 指定HTML文件的地址。 例如 http://192.168.0.100/portlets/file/search.html. 当URL被标识时,该参数也将被处理。 URL或 htmlURL都是必填项 |
xhtmlURL | 标识XHTML文档的地址 例如 http://www.mydomain.com/portlets/file/search.xhtml. |
wmlURL | 指定WML文件地址 例如 例如http://www.mydomain.com/portlets/file/search.wml. |
helpPage | 页面帮助路径。 路径以“/”开始 |
示例
<portlet>
<description>An 示例 of URL Portlet</description>
<portlet-name>Welcome</portlet-name>
<portlet-class>com.nabhinc.portlet.url.URLPortlet</portlet-class>
<init-param>
<name>filePath</name>
<value>file:///home/portlets/file/samples/welcome.html</value>
</init-param>
<init-param>
<name>xhtmlFilePath</name>
<value>file:///home/portlets/file/samples/welcome.xhtml</value>
</init-param>
<init-param>
<name>helpPage</name>
<value>/portlets/file/file_help.jsp</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>HELP</portlet-mode>
</supports>
<supports>
<mime-type>application/vnd.wap.xhtml+xml</mime-type>
</supports>
<portlet-info>
<title>Welcome</title>
<keywords>User, URL</keywords>
</portlet-info>
</portlet>
XSL Portlet
Java 类
com.nabhinc.portlet.xsl.XSLPortlet
描述
XSL组件使用XML样式表语言将XML文档转换成HTML做为WEB呈现。该文件可以是本地文件或通过URL访问的文件,也可以获取自定义XML资源实现。
组件标签
init-param | 描述 |
xslPath | 指定xsl样式表的相对路径(在stringbeans应用的根路径) 路径以“/”开始。 xslPath和xslURL都需要指定 |
xslURL | 指定xsl样式表的绝对路径或URL路径。该路径需要包含“://”,xslPath和xslURL都需要指定。 |
属性 | 描述 |
docPath | 指定xml文档的相对路径(在stringbeans应用的根路径) 路径以“/”开始. docPath 和 docURL 都需要指定 |
docURL | 指定xml文档的绝对路径或URL,指定xsl样式表的绝对路径或URL路径。该路径需要包含“://”,docPath 和 docURL 都需要指定。 |
示例
<portlet>
<description>Generates tabular display fr a stock quote inXML.</description>
<portlet-name>XSLStock Quote</portlet-name>
<portlet-class>com.nabhinc.portlet.xsl.XSLPortlet</portlet-class>
<init-param>
<name>xslPath</name>
<value>/portlets/xsl/samples/quote.xsl</value>
</init-param>
<init-param>
<name>contentPage</name>
<value>/portlets/xsl/xsl_view.jsp</value>
</init-param>
<init-param>
<name>editPage</name>
<value>/portlets/xsl/xsl_edit.jsp</value>
</init-param>
<init-param>
<name>helpPage</name>
<value>/portlets/xsl/xsl_help.jsp</value>
</init-param>
<expiration-cache>3600</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>HELP</portlet-mode>
</supports>
<portlet-info>
<title>XSLPortlet: Stock Quote for NABH</title>
<keywords>XSL,Samples</keywords>
</portlet-info>
<portlet-preferences>
<preference>
<name>docPath</name>
<value>/portlets/xsl/samples/quote.xml</value>
</preference>
</portlet-preferences>
</portlet>
主题
在当前版本中提供了10个不同的主题。它们可以stringbeans目录/themes目录下找到。
添加新主题很简单,只需要通过如下步聚:
· 在themes目录下新建文件夹,并在该文件夹内定义portal.xml文件
· 在上一步创建的文件夹内创建样式文件,命名为portal.css。样式文件中必须定义下表中的类描述符。你也可以拷贝其它文件夹中已存在的protal.css修改或定义新的类样式。
· 在新建的主题目录下新建images目录(它必须和portal.css文件同级)。拷贝所有你的主题图片到该images目录。有30图片/图标(必要的)将在主题图像列表中展现。
· 在主题中更多的高级自定义(改名),例如,你需要重新定位banner区域或指定页面格式,拷贝partal.jsp和它包含的文件到你的主题目录。默认的stringbeans portal.jsp文件可以在strinbeasn根目录/my 目录下。拷贝你需要的这些文件到你的主题目录做必要的修改。以下文件你可以在stringbeans根目录/my 目录下找到:
§ portal_vars.jsp:定义通用的变量将被用于后续的jsp文件 中。你必须始终包含这个文件。并确保变量在这里定义
§ portal_header.jsp:显示头
§ portal_menu.jsp : 显示顶层菜单条,以Tab页的形式展现。portal_spacer.jsp : 渲染空白生。
§ portal_icon_bar.jsp –定义工具符图标,它将在页面创建和编辑时呈现。
§ portal_body.jsp (*) –基布局信息,多个布局在这个页面上。 portal_footer.jsp – 显示页面底部.
另外,以下文件文件包含在portal上显示:
§ portlet_narrow.jsp –渲染组件在窄列中的显示.
§ portlet_wide.jsp –渲染组件在宽列中显示 (宽度 > 250)
§ portlet_menu.jsp –渲染组件在菜单列中 (在menu布局下有效)。
§ action_links.jsp (*) – 显示组件图标,它允许改变组件的模式和窗口状态。
§ column_layout.jsp (*) – 渲染列布局(包含在normal.jsp)
§ single_layout.jsp (*) – 渲染单独的组件布局(包含在normal.jsp)
§ menu_layout.jsp (*) – 渲染菜单布局(包含在normal.jsp)
§ detached.jsp (*)- 渲染detached portlet 窗口.
§ maximized.jsp (*) – 渲染最大化组件.
§ normal.jsp (*) – 渲染普通模式下的门户页.
§ portal_banner.jsp –渲染门头 (包含在portal_header.jsp)
§ portal_date.jsp – 显示当前日期 (包含在portal_header.jsp)
建议你不要改变文件标记(*)
Style Class Name | 描述 |
.ThemeInfo | 主题名称。该属性值将会显示在属性界面的下拉列表中 |
.Body | 视图容器 |
.Page | 包含在视图容器中,用来定义页面宽度 |
.PortalDate | 页面上方显示日期 |
.TopLink | 顶端页面链接。例如Preferences,Edit Profile和Logout。另外,还定义了鼠标移上的样式 |
.Banner | 标题占位符 |
.MenuBar | 菜单条,包含菜单项。当当前页面为活动页面时没有链接 |
.MenuBarLink | 可以链接的菜单项。也定义了鼠标移上的样式。 |
.IconBar | 菜单条上的图标的在这里可以定义创建 编辑 和删除图标。 |
.Spacer | 两个组件间的缝隙填充 |
.WideColumn | 列宽宽于250 px. |
.WidePortlet | 宽组件包含的头/标题和内容 |
.WidePortletHeader | 宽组件包含的头/标题 |
.WideContent | 宽组件包含的内容 |
.NarrowColumn | 列宽小于250像素 250 px. |
.NarrowPortlet | 窄组件包含的头/标题和内容 |
.NarrowPortletHeader | 窄组件包含的头/标题 |
.NarrowContent | 窄组件包含的内容 |
.MenuPanel | 左菜单导航面板 |
.UnselectedOption | 未选中菜单项 |
.SelectedOption | 选中菜单项 |
.Footer | 页面底条 |
.Copyright | 底条中的版权声明 |
.GroupHeader0 | 报表组件 分组头样式. |
.GroupHeader1 | 报表组件 分组头样式,字体大小小于GroupHeader0 |
.Tooltip |
需要: visibility:hidden;position:absolute 样式属性,为的是隐藏提示,当移动到相应的标签上才显示信息。 |
.portlet-font | Use interchangeable with portlet-section-body. |
.portlet-section-body | Used mostly in portlet's table's row. Use alternately with portlet-section-alternate. |
.portlet-section-alternate | Used mostly in portlet's table's row. Use alternately with portlet-section-body. |
.portlet-section-header | 组件表格头. |
.portlet-msg-error | 组件错误提示信息 |
.portlet-msg-alert | 组件警告信息 |
.button | 表单中的按钮:ubmit, cancel, done, reset, apply, continue, OK |
.text, .password, .checkbox, .radio | 表单其它项 |
除上面提到的类,还要定义html标记的其它样式:
· a (链接, 包括a:hover and a:visited)
· textarea and select (表单)
· h1, h2, h3, h4, h5, h6 (标题).
Image Name | Size | 描述 |
admin.gif | 14x14 | 当前未用,保留当框架添加支持管模式组件。 |
ascending.gif | 10x10 | 表格组件中用来指示升序排序 |
banner.gif | 960x67 | 门户横幅图片 |
bottom_left.gif | 18x18 | 底栏和左边栏 |
bottom_right.gif | 18x18 | 底栏右边 |
delete.gif | 14x14 | 显示在组件头上用来在页面上删除窗口。 |
delete_page.gif | 16x16 | 删除页面按钮,在图标工具条的上方 |
delete_page_gray.gif | 16x16 | 禁用删除页面按钮。在默认页面的图标工具条的上方。 |
descending.gif | 10x10 | 使用表格组件时用来标识降序排列 |
detach.gif | 14x14 | 分享按钮显示在组件头上。 |
edit.gif | 14x14 | 编辑按钮显示在组件头上。 |
edit_page.gif | 16x16 | 图标显示在顶层工具栏上。用来编辑当前页面内容。 |
edit_page_gray.gif | 16x16 | 禁止编辑当前页面图标。图标显示在顶层工具栏 |
help.gif | 14x14 | 在组件头上的帮助按钮 |
hideborder.gif | 14x14 | 图标位于编辑内容页面,用来隐藏组件边框。 |
hidetitle.gif | 14x14 | 图标位于编辑内容页面,用来隐藏组件标题 |
max.gif | 14x14 | 图标位于组件头用来最大化组件 |
movedown.gif | 14x14 | 图标位于页面内容编辑,用于下移组件 |
movedown.gif | 14x14 | Icon on page content editor for moving down a portlet. |
moveleft.gif | 14x14 | 图标位于页面内容编辑,用于左移组件 |
moveright.gif | 14x14 | 图标位于页面内容编辑,用于右移组件 |
moveup.gif | 14x14 | 图标位于页面内容编辑,用于上移组件 |
new_page.gif | 14x14 | 图标位于工具条,用于创建新的门户标签页 |
non_secure.gif | 14x14 | 图标位于图标工具条,用于访问普通(http)方式访问门户页。 |
pixel.gif | 1x1 | 透明图片,用来维护标题栏的宽度和创建空白元素。 |
restore.gif | 14x14 | 该图标位于最大化组件窗口,用来恢复组件的正学显示。 |
secure.gif | 14x14 | 组件位于工具条,用来以(https)方式访问页面。 |
showborder.gif | 14x14 | 图标位于页面内容编辑,用来显示组件边框 |
showtitle.gif | 14x14 | 图标位于页面内容编辑,用来显示组件标题 |
view.gif | 14x14 | 图标位于组件头,用来改变,组件显示模式。 |
国际化
当前有6种预定义的语言体系:美英(en_US),英英(en_UK),德语(de),法语(fr),印尼语(id/in),西班牙语(es)。
支持其它语言:
1. 找到locale.properties 文件,位于stringbeans根目录/WEB-INF/目录。
2. 拷贝并粘贴文件中以###开始到###结束的内容
3. 替换拷贝出来的区域的语言名称代码为需要添加的语言代码。如查语言中标识了country,name则它们的出现顺序如:语言代码+下划线+国家代码。如:en_GB
注意:
o 语言代码必须定义在 ISO639中的双字符小写代码
o 国家代码必须是定义在ISO 3166中双字符大写代码
示例: sb.locale.en_GB.portal.welcome = Welcome
4. 在protal.xml配置文件<support-locales>标签中添加你想支持的语言。
已知问题
· 当不同的URL用来登录访问同一个门户则要求用户重新登录。例:http://localhost:8080 换成 http://192.168.0.1:8080,反之也一样。将会有新的会话被创建而之前的一个还一直有效并记录在online-users表中。在线用户将显示同一ID的两个活动用户。