探索Weblogic Embedded LDAP

Weblogic Ver. 10.3.3

JXplorer Ver. 3.2.1

Weblogic不愧为企业级应用服务器,面向企业级应用最常见的需求之一,Weblogic在安装完成后即附带了一个Embedded LDAP,用于认证/授权/凭证匹配及角色匹配等。本文主要对Weblogic Embedded LDAP进行探索,包括Embedded LDAP的管理、结构…..

重设Embedded LDAP密码

使用LDAP Browser浏览Embedded LDAP,首选需要取得Embedded LDAP的密码。对于全新创建的Weblogic domian以及不了解当前Embedded LDAP密码的domain,需要重设Embedded LDAP的密码。

登入目标domain的console,选择domain > 安全 > 嵌入式LDAP


重设身份证明密码即可

使用JXplorer登录Embedded LDAP

下载JXplorer,这里使用的版本为3.2.1

运行JXplorer,连接Embedded LDAP




填写信息如下
  • Host 为 weblogic服务器地址
  • Port 为 AdminServer端口号
  • Protocol 选择 LDAP v3
  • Base DN 填写 dc=<目标domain名称>
  • Security Level 选择 User + Password
  • User DN 填写 cn=Admin
  • Password 填写 之前重设的Embedded LDAP密码
    若登录信息正确,登录之后能看到类似如下的内容

Embedded LDAP结构

通过查看Embedded LDAP结构可以得到,weblogic使用这样的结构存储安全相关信息:

dc=<domain名称>

└─ou=myrealm (安全域)

├─ou=groups (安全域 > 用户和组 > 组)

│ ├─cn=<组名>

│ ├─cn=<组名>

│ ├─cn=<组名>

│ …

├─ou=people (安全域 > 用户和组 > 用户)

│ ├─cn=<用户名>

│ ├─cn=<用户名>

│ ├─cn=<用户名>

│ …

├─ou=XACMLAuthorization (策略,可在domain / managed server / realm多个级别设定)

│ └─ou=policies

│ └─ …

└─ou=XACMLRole (角色,可在domain / managed server / realm多个级别设定)

└─ou=policies

└─ …

cn=weblogic, ou=people, ou=myrealm, dc=owc_domain

该节点为用户weblogic,查看该节点可知weblogic中user具有如下class

inetOrgPerson

organizationalPerson

person

top

wlsUser

类person, prganizationalPerson, inetOrgPerson为用户增加了多数常用属性,并可供应用读写。

cn=Administrators,ou=groups,ou=myrealm,dc=owc_domain

该节点为组Administrators,查看该节点可知weblogic中group具有如下class

top

groupOfUniqueNames

groupOfURLs

类groupOfURLs引入了MemberURL属性,关于ldap url,参见这篇文章

参考资料

解决Ubuntu 10.10中桌面特效不能启用的问题

虽然标题上是解决Ubuntu 10.10桌面特效不能启用问题,但实际这个问题和Ubuntu 10.10本身没什么关系。之所以起这个标题是因为发现很多同学认为这是10.10的BUG。那么看看原因为何把。

昨天由10.04升级至10.10,今天例行进行部分包的小升级(Ubuntu的发行版一向如此,发行后发现一些小bug会及时修正),顺便更新了最新的NVIDIA驱动程序。重新启动后发现Compiz特效没有了,于是进入系统管理 > 首选项 > 外观 > 视觉效果,准备启用“扩展”特效。不想直接给我弹出来个错误“不能启用特效”。

由于更新了NVIDIA驱动,首先怀疑是它的问题。在尝试了多个旧驱动无果的情况下,进入gnome环境,使用terminal运行gnome-appearance-properties,并将特效切换为扩展,发现命令行中有报错

Google了一下,发现这个decoration plugin是和compiz-core在一起的,从新立得里面看了一下我现在的compiz-core版本,发现竟然是1:0.9.0withoutdecoration版本。回想起之前10.10刚刚更新完成时compiz是工作正常的,那么就只有一个原因了:由于启用了Compiz Packagers PPA

那么接下来的事情就很简单了,遵照如下步骤即可解决

  • 停用Compiz Packagers PPA,可以通过Ubuntu Tweak,或者直接编辑 /etc/apt/sources.list
  • 删除版本号为1:0.9.0的compiz组件,可以在新立得里面进行(注意选择“标记以便彻底删除”);也可以通过命令 sudo apt-get remove –purge <包名> 来进行。具体需要移除的软件包为

    • compiz
    • compiz-core
    • compiz-plugins
    • compiz-gnome
    • compizconfig-backend-gconf
    • compiz-fusion-plugins-main
    • compiz-fusion-plugins-extra
    • compiz-fusion-bcop
    • libdecoration0
    • 移除期间会连带删除ccms,emerald等
  • sudo apt-get update 刷新更新列表

  • 重新安装compiz开头的包以及libdecoration0,ccms,emerald等,最后确认如下包的版本

    • compiz 1:0.8.6-0ubuntu9
    • compiz-core 1:0.8.6-0ubuntu9
    • compiz-plugins 1:0.8.6-0ubuntu9
    • compiz-gnome 1:0.8.6-0ubuntu9
    • compizconfig-backend-gconf 0.8.4-1ubuntu5
    • compiz-fusion-plugins-main 0.8.6-0ubuntu2
    • compiz-fusion-plugins-extra 0.8.6-0ubuntu1
    • compiz-fusion-bcop 0.8.4-1
    • libdecoration0 1:0.8.6-0ubuntu9
  • 重新启动X,再启用compiz即可


 

解决Ubuntu 10.10下VMware服务不能编译问题 Unable to build kernel module – See log file…

今天抽空将我的Ubuntu 10.04升级至10.10,看起来一切都很美好。但在启动VMware Workstation时提示没有检测到VMware相关模块,需要安装。进行安装过程中报错
Unable to build kernel module – See log file /tmp/xxx…..

解决方法如下,在终端中执行
wget http://www.sputnick-area.net/scripts/vmware7.1.1-patch-kernel-2.6.35.bash
chmod +x ./vmware7.1.1-patch-kernel-2.6.35.bash
sudo ./vmware7.1.1-patch-kernel-2.6.35.bash


再启动VMware workstation,点击Install即可自动完成安装。

注意,在VMware workstation升级后可能需要重新执行该kernel的patch,这时需要首先移除锁文件,否则会导致patch认为已经完成修补而导致补丁安装不成功
sudo rm /usr/lib/vmware/modules/source/.sputpatch

下载不到补丁的同学,移步这里

host定义不正确造成的WebCenter安装错误

OS Ver. Oracle Enterprise Linux 5
WebCenter Ver. 11.1.1.2.0

在客户提供的环境中安装WebCenter时遇到问题,在声明UCM Content Server Port及Content Server Admin Port界面,无论使用任何Port均提示错误:

INST-07106:Port xxxx is not free or not valid

经检查iptables已关闭,且没有其他程序占用目标端口。由于找不到错误原因,故没有选择安装UCM,打算安装WebCenter完成后单独安装UCM。

在WebCenter 安装完成后,进行domain创建,分别创建Admin Server及WLS_Spaces, WLS_Portlet两个Managed Server。后在domain启动过程中发现Admin Server启动及使用正常,而Managed Server启动不成功,报用户验证错误。读Log发现Managed Server启动过程中报出webcenter.demo.com.cn:7001连接不到。

经检查发现,客户提供的Enterprise Linux中在网络配置中指定了host name为
webcenter.demo.com.cn
并在/etc/hosts中加入了一行
xxx.xxx.xxx.xxx webcenter.demo.com.cn webcenter
而host中定义的ip地址并不是当前环境的ip地址。

至此确定问题原因,在安装过程和domain创建/配置过程中,由于当前环境配置了host name,系统自动使用host name代替了当前id地址。而由于host name指向的ip地址并不可用,造成了WebCenter安装过程中的端口检查失败及Managed Server启动过程中的验证失败。

在/etc/hosts中修正ip地址的配置,将其配置为当前环境的ip地址,问题即告解决。

使用ADF制作基于Google API的天气预报


JDeveloper Ver. 11.1.1.3.0
OS Ver. Ubuntu 10.04 LTS

在尝试使用第三方提供的WebService,Portlet等方式进行天气预报小控件的开发后,我发现最为简洁稳定的天气预报实现方式还是调用Google API来进行实现。

主要是请求Google API获得XML报文,解析获得实际的信息,并构建至ADF页面。

该小控件实现了如下内容

1. 读取Google API,获得城市列表、当前天气预报、未来3天天气预报。
2. 切换城市,使用PPR技术,更换城市后不需要刷新整个页面即可刷新天气预报内容。
3. 将城市信息保存入浏览器Cookie,再次进入应用后自动显示上次退出时选择的城市。
该小控件可以iframe方式嵌入,以taskflow方式调用,亦可包装为Portlet供其他应用程序调用。

实现效果截图:

源代码下载

[Updated]
Ver 1.1 解决了xml解析在不同sax解析器版本下的bug,优化cookie存储方式
源代码下载

 


 

WebLogic 11g 在X64平台新建Manage Server启动无法输入密码的BUG

WebLogic Ver. 11g 1.3
OS Ver. RHEL 5.4 X86_64

对于新创建的Domain,启动时要求输入用户名和密码。但出现了只可输入用户名,尚未输入密码程序自动退出的现象。

需要修改该Domain的setDomianEnv.sh。查找LD_LIBRARY_PATH,可见该变量内容为:
LD_LIBRARY_PATH=”${WL_HOME}/server/native/linux/i686${CLASSPATHSEP}${LD_LIBRARY_PATH}”

由于系统使用X86_64环境,这里错误的使用了针对32位环境的LD_LIBRARY_PATH。将这里修改为
LD_LIBRARY_PATH=”${WL_HOME}/server/native/linux/x86_64${CLASSPATHSEP}${LD_LIBRARY_PATH}”
问题即解决。

Discussion Forum (jive forum) LDAP配置

WebCenter Ver. 11.1.1.2.0

在配置WebCenter Spaces的服务过程中发现安装WebCenter Spaces时连带安装的Jive Forums不能使用Weblogic上设定的用户进行登录。怀疑为Jive Forums用户数据源来源配置不正确,故重新配置Jive Forums使用Weblogic上的Embedded LDAP。

安装WebCenter时默认安装的Discussion Forum(即jive forum),发现使用weblogic这个用户不能够登录Admin Console。解决方法为重设jive forum,步骤如下:
  1. 停止Discussion Forum所在的Weblogic Managed Server,默认为WLS_Services
  2. 将文件$FMW_HOME/user_projects/domains/<webcenter_domain>/config/fmwconfig/servers/WLS_Services/owcdiscussions<version>/jive_startup.xml
    中的<setup/>标签值设置为false
  3. 启动Weblogic Server,进入页面 http://<your server>:<your discussion port>/owc_discussions/admin/setup/
  4. 首页显示为jive Discussion所在的安装环境信息,确认后点击Continue继续
  5. 选择使用JNDI DataSource
  6. 设置数据源至 jdbc/OWC_DiscussionsDS
  7. 选择使用LDAP作为用户数据源,并配置LDAP至Weblogic Embedded LDAP Server,需要改变的字段包括LDAP Host,LDAP Port,Base DN,Admin DN,Admin Password。关于Weblogic Embedded LDAP Server,可以参见这篇文章
  8. Email设置不做修改,最后一步设置LDAP中的用户映射为jive forum的管理员,这里将weblogic用户映射为jive forum管理员。
  9. 重启WLS_Services,使用weblogic用户即可登录jive forum的admin console
    第七步相关资料
    Managing the Embedded LDAP Server

扩展WebCenter Spaces 引入客制化taskflow



本来想上载到Google Docs再贴过来的,没想Google Doc不能转换大于500K的文档。上载为PDF了,链接在此:

扩展WebCenter Spaces 引入客制化taskflow

大纲:

第一部分:ExtendWebCenterSpaces 应用的设置 第二部分:需要添加至 WebCenter Spaces 的客制化 taskflow 设置
第三部分:添加客制化 taskflow 至 ExtendWebCenterSpaces 应用 第四部分:部署 ExtendWebCenterSpaces 应用

将ADF应用部署为Shared Library

JDeveloper & ADF Ver. 11.1.1.2.0
DB Ver. XE


在一个典型的ADF开发中,通常开发者会依据功能开发大量taskflow,并将其部署为多个ADF Library Jar File,再在主应用中引用这些已经开发完成的ADF jar,并将主应用打包为EAR进行发布。这种开发方式有效的减低了开发人员需要进行协作的开发量,但当打包为Jar加入主应用的某功能需要更新时,必须重新发布主应用。而Weblogic提供允许将war/ear部署为Application或Shared Library,依此特性,可将开发完成的功能Jar部署为多个Shared Library,主应用引用各Shared Library。当需要进行功能的更新时,只需重新部署Shared Library即可。


本例中将开发3个Application,分别为:

Demo_EmployeeApp – 使用ADF开发的具体功能 Demo_ToLib – 打包ADF开发的功能jar包为可部署为shared library的war包
* Demo_Main – 主应用

本例中将使用Oracle XE自带HR schema,并在Weblogic中建立jndi为jdbc/HRDS的数据源。

源代码下载

查看完整文档




解决ADF 11g PS2 中 StringIndexOutOfBoundsException

错误栈:
<May 7, 2010 9:28:58 PM CST> <Error> <HTTP> <BEA-101020> <[ServletContext@1701054785[app:em module:/em path:/em spec-
version:2.5]] Servlet failed with Exception
java.lang.StringIndexOutOfBoundsException: String index out of range: -2
at java.lang.String.substring(String.java:1937)
at java.lang.String.substring(String.java:1904)
at org.apache.myfaces.trinidadinternal.style.util.CSSGenerationUtils._getNSComponentSelector
(CSSGenerationUtils.java:632)
at org.apache.myfaces.trinidadinternal.style.util.CSSGenerationUtils.getNamespacedSelectors
(CSSGenerationUtils.java:525)
at org.apache.myfaces.trinidadinternal.style.cache.FileSystemStyleCache._getShortStyleClassMap
(FileSystemStyleCache.java:1086)
Truncated. see log file for complete stacktrace
>

这是JDK6u14以上版本在x86架构使用SSE4.2的处理器上使用时的一个已知bug,编号为6875866

解决方法:关闭JDK的UseSSE42Intrinsics



1. Project Properties -> Run/Debug/Profile -> Default (或其他配置文件名称) -> Edit… -> Java Options -> 加入 -XX:-UseSSE42Intrinsics .

2. 编辑 <JDEV_HOME>/jdev/bin/jdev.conf 加入如下内容 AddVMOption XX:-UseSS42Intrinsics

3. 修改有问题domain的setDomainEnv.sh,在文件末尾加入如下语句
JAVA_OPTIONS="${JAVA_OPTIONS} -XX:-UseSSE42Intrinsics"
export JAVA_OPTIONS