首先修改LDAP admin的密码,登录服务器,重设LDAP服务器密码为zimbra
su - zimbra
zmldappasswd -r zimbra
使 用User DN uid=admin,ou=people,dc=<MYDOMAIN>,dc=<COM>和上面重设的密码登录LDAP,注意替 换MYDOMAIN,COM为 zimbra安装时的domain。如我这里使用uid=admin,ou=people,dc=zimbra-test,dc=com
安装环境:RHEL 5.4 X86_64
关闭防火墙:[root@zimbra-test ~]# service iptables stop
运行ntsysv,设定iptables不自动启动
关闭SELINUX:[root@zimbra-test ~]# setenforce0
修改/etc/sysconfig/selinux,设定SELINUX=disabled
确定安装服务器的IP地址,本例中使用10.182.0.37
关闭sendmail服务:[root@zimbra-test ~]# service sendmail stop
[root@zimbra-test ~]# chkconfig sendmail off
zimbra的安装需要配置正确的FQDN,即需要在host文件中加入当前服务器的IP与域名,形如
10.182.0.37 mail.zimbra-test.com mail
这一步骤不是必须的,如果你的安装环境中存在DNS服务器,且该DNS的MX记录未被占用或可以更改,那么请修改你的DNS服务器MX记录,然后跳过此步骤;
如果你需要进行zimbra的测试安装,或需要保持原有邮件系统的正常运行,待指定时间进行系统切换,那么请完成此步骤。
确定服务器是否安装了named,确定如下包已安装
[root@zimbra-test ~]# rpm -qa | grep bind
bind-9.3.6-4.P1.el5
ypbind-1.19-12.el5
bind-libs-9.3.6-4.P1.el5
bind-chroot-9.3.6-4.P1.el5
bind-utils-9.3.6-4.P1.el5
配置文件[root@zimbra-test ~]# vi /var/named/chroot/etc/named.conf
options {
directory “/var/named”;
dump-file “/var/named/data/cache_dump.db”;
statistics-file “/var/named/data/named_stats.txt”;
};
include “/etc/rndc.key”;
zone “zimbra-test.com.cn” {
type master;
file “db.mail.zimbra-test.com.cn”;
};
配置文件[root@zimbra-test ~]# vi /var/named/chroot/var/named/db.mail.zimbra-test.com.cn
;
; Addresses and other host information.
;
$TTL 3D
@ IN SOA zimbra-test.com. admin.zimbra-test.com. (
10118 ; Serial
43200 ; Refresh
3600 ; Retry
3600000 ; Expire
2592000 ) ; Minimum
; Define the nameservers and the mail servers
IN NS @
IN MX 10 zimbra-test.com.
@ IN A 10.182.0.37
mail IN CNAME @
pop3 IN CNAME @
smtp IN CNAME @
配置文件[root@zimbra-test ~]# vi /etc/resolv.conf
加入nameserver 10.182.0.37至最顶部sharch zimbra-test语句之下,以指定当前服务器使用本机作为最优先搜索的DNS。
启动named服务
[root@zimbra-test ~]# service named start
配置named自启动
[root@zimbra-test ~]# chkconfig named on
测试域名解析
[root@zimbra-test ~]# nslookup zimbra-test.com
若出现类似如下内容则说明工作正常
Server: 10.182.0.37
Address: 10.182.0.37#53
Name: zimbra-test.com
Address: 10.182.0.37
解压下载的Zimbra安装包,运行install.sh,一路选择Y即可
到最后一步出现菜单
Main menu
1) Common Configuration:
2) zimbra-ldap: Enabled
3) zimbra-store: Enabled
+Create Admin User: yes
+Admin user to create: [email protected]
* +Admin Password UNSET
+Enable automated spam training: yes
+Spam training user: [email protected]
+Non-spam(Ham) training user: [email protected]
+Global Documents Account: [email protected]
+SMTP host: mail.rookie.com
+Web server HTTP port: 80
+Web server HTTPS port: 443
+Web server mode: http
+IMAP server port: 143
+IMAP server SSL port: 993
+POP server port: 110
+POP server SSL port: 995
+Use spell check server: yes
+Spell server URL: http://zimbra-test.com:7780/aspell.php
+Configure for use with mail proxy: FALSE
+Configure for use with web proxy: FALSE
4) zimbra-mta: Enabled
5) zimbra-snmp: Enabled
6) zimbra-logger: Enabled
7) zimbra-spell: Enabled
8) Default Class of Service Configuration:
r) Start servers after configuration yes
s) Save config to file
x) Expand menu
q) Quit
Address unconfigured (**) items (? - help)
需要注意修改Admin Password,修改完成后保存退出即可。
由之前的安装步骤可见,Zimbra的安装相对简单。
事实上在Zimbra的安装过程中,安装程序为我们配置了
为操作系统创建Zimbra用户
为Zimbra服务配置随操作系统自动启动
MYSQL数据库
OpenLDAP轻量级目录访问服务
Apache
拼写检查服务
IM服务
……
上述组件按照默认方式是部署在同一台服务器上的,依据不同部署环境的需求,可以将不同组件安装在不同服务器上。
注意首先切换到zimbra用户下
[zimbra@zimbra-test ~]# zmcontrol start
[zimbra@zimbra-test ~]# zmcontrol stop
对于部署目标为Weblogic的web应用来说,有两处用于设置session timeout
<session-timeout>60</session-timeout>
</session-config>
<session-param>
<param-name>TimeoutSecs</param-name>
<param-value>3600</param-value>
</session-param>
</session-descriptor>
如果两处均设置了值,则web.xml会覆盖weblogic.xml中的设置。
需要注意的是,在WebLogic Console中看到的应用的Session Timeout为weblogic.xml中配置的值。
Virtual Developer Day - Rich Enterprise Applications
OS Ver. RHEL 5.5
WebCenter Ver. 11.1.1.3.0
本文目标为编写WebCenter相关产品(Weblogic Admin Server,Weblogic Managed Server,UCM,Apache)的统一启动脚本。
在<webcenter_domain_home>/servers/AdminServer/security及<webcenter_domain_home>/servers/WLS_Spaces/security下分别创建boot.properties文件,文件内容为
username=<admin user name>
password=<admin user password>
boot.properties文件将用于启动服务器时的用户名/密码验证。
不必担心boot.properties文件明文存储的问题,当对应Managed Server成功启动一次后,该文件将自动改为密文存储。
启动脚本为
#!/bin/bash
middleware_base=/u01/Oracle/Middleware
domain_home=$middleware_base/user_projects/domains/owc_domain
domain_log=$domain_home/logs
wc_home=$middleware_base/Oracle_WC1
ucm_apache_home=/u01/apache2
date_now=$(date +%Y%m%d%H%M%S)
if [ -e $domain_home/app_started.lck ]; then
echo “Server already started”
exit
fi
echo “——— Start Weblogic AdminServer … ———“
$domain_home/bin/startWebLogic.sh &> $domainlog/AdminServer$date_now.log &
echo “Server will ready after servel minutes …”
echo “————————————————–”
echo
echo “———— Start WebCenter Server … ———-“
$domain_home/bin/startManagedWebLogic.sh WLS_Spaces &> $domain_log/WLSSpaces$date_now.log &
echo “Server will ready after servel minutes …”
echo “————————————————–”
echo
echo “—————— Start UCM ———————“
$wc_home/ucm/etc/idcserver_start
$wc_home/ucm/admin/etc/idcadmin_start
$ucm_apache_home/bin/apachectl start
echo “————————————————–”
touch $domain_home/app_started.lck
echo “WebCenter Application Start Successfully”
停止脚本为
#!/bin/bash
middleware_base=/u01/Oracle/Middleware
domain_home=$middleware_base/user_projects/domains/owc_domain
wc_home=$middleware_base/Oracle_WC1
ucm_apache_home=/u01/apache2
date_now=$(date +%Y%m%d%H%M%S)
export userID=weblogic
export password=weblogic1
echo “———— Stop WebCenter Server … ————“
$domain_home/bin/stopManagedWebLogic.sh WLS_Spaces
echo “—————————————————“
echo
echo “———– Stop Weblogic AdminServer … ———“
$domain_home/bin/stopWebLogic.sh
echo “—————————————————“
echo
echo “——————– Stop UCM ———————“
$ucm_apache_home/bin/apachectl stop
$wc_home/ucm/etc/idcserver_stop
$wc_home/ucm/admin/etc/idcadmin_stop
echo “—————————————————“
rm $domain_home/app_started.lck
echo “WebCenter Application Stop Successfully”
当注意正确设置启动/停止脚本头部的各环境变量。当启动完成后,会在domain_home文件夹下写入服务器启动锁文件app_started.lck以防止多次启动服务器;停止完成后会删除该lck文件。
Oracle官方释出了关于JSF 2.0加入JDeveloper及ADF的Roadmap,即将在下一个JDeveloper释出版本11.1.2中增加JSF2.0。可以在此处查看白皮书:
http://www.oracle.com/technetwork/developer-tools/adf/learnmore/adffaces-jsf20-190927.pdf
JDeveloper Ver. 11.1.1.3.0
从11.1.1.2.0版本开始,ADF Faces中添加了 Carousel 这一展示控件。该控件可以方便的用于展示图片和视频,但相比当前网页设计的元素,缺乏了自动滚动的功能。
本文将通过对ADF Faces控件的简单组合,为 Carousel 增加自动滚动及滚动控制功能。效果如下图
Model层使用JavaBeanDataControl,不再赘述。
效果实现目标为:
保留动画效果
基于以上目标,实现方式为
使用poll控件定时执行Next动作实现滚动
v1.1 Update
修正该功能在taskflow中使用时由于region嵌套导致component id 改变,找不到component进而js无法执行的错误。
JDev Ver. 11.1.1.3.0
问题场景:
使用Carousel控件,希望在 backing bean 中的CarouselSpinListener方法中设置Carousel控件binding的Iterator对象的CurrentRow,进而达到改变Model层对象CurrentRow的目的。且不希望使用AM端暴露client方法的实现方式。
问题分析:
以前遇到需要设置AM中VO实例的currentRow时,总是在AM中创建一个client方法,接受参数进行对应VO的currentRow设置。其实当DataControl中的对象binding到client端生成XXIterator(实例继承于JUIteratorBinding)后,在Iterator对象上已存在两个方法 setCurrentRowWithKey(String) 及 setCurrentRowWithKeyValue(String) 。如图
这两个方法在使用上的问题为:它们均只接受一个String类型变量。
通过查看adfm.jar中的源代码,发现JUIteratorBinding上的这两个方法均调用至DCBeanDataControl类中的同名方法。同时在DCBeanDataControl中还有一个未暴露的setCurrentRowWithKey(DCIteratorBinding iter, Key key) 方法可供调用。首先尝试调用DCBeanDataControl中的setCurrentRowWithKey方法,代码片段代码如下:
public void carouseSpin(CarouselSpinEvent carouselSpinEvent) {
FacesContext fc = FacesContext.getCurrentInstance();
Application app = fc.getApplication();
JUIteratorBinding obj = (JUIteratorBinding)app.evaluateExpressionGet(fc, “#{bindings.itemsIterator}”, Object.class);
this.carousel.setRowKey(carouselSpinEvent.getNewItemKey());
Key currentRowKey = (Key)((List)carouselSpinEvent.getNewItemKey()).get(0);
DCDataControl dc = obj.getDataControl();
dc.setCurrentRowWithKey(obj, currentRowKey);
}
经测试该方法可行,但由代码可见,该方法将DataControl对象取到了backing bean中使用,破坏了DataControl - DataBinding - View这种结构。
通过查看JUIteratorBinding类中setCurrentRowWitheKey及setCurrentRowWithKeyValue两个方法的源代码,对两个方法作出如下总结:
setCurrentRowWithKeyValue(String) 当对应Iterator的model层对象声明为单主键时,该方法可用于设置Iterator当前行。传入参数为对应主键值。
setCurrentRowWithKey(String) 当对应Iterator的model层对象声明为单主键多主键时,需要将主键Key对象编码后以String传入。
代码片段:
public void carouseSpin(CarouselSpinEvent carouselSpinEvent) {
FacesContext fc = FacesContext.getCurrentInstance();
Application app = fc.getApplication();
JUIteratorBinding obj = (JUIteratorBinding)app.evaluateExpressionGet(fc, “#{bindings.itemsIterator}”, Object.class);
this.carousel.setRowKey(carouselSpinEvent.getNewItemKey());
Key currentRowKey = (Key)((List)carouselSpinEvent.getNewItemKey()).get(0);
obj.setCurrentRowWithKey(RepConversion.bArray2String(currentRowKey.toByteArray(true)));
}
WebCenter Ver. 11.1.1.3.0
UCM Ver. 10.1.5.1
OS Ver. RHEL 5.4
两种方式进行配置
JPS Provider方式
ldapuser Provider方式
首先需要重设WebLogic Embedded LDAP身份证明密码,详见探索WebLogic Embedded LDAP
使用LDAP方式配置,LDAP中的组没有映射为UCM中的Role