JDeveloper 11g 之消失的磁盘空间

JDeveloper Ver. 11.1.1.2.0
JVM Ver. 1.6.0_18
OS Ver. Ubuntu 10.04
lucid

自从使用JDeveloper
11g进行ADF应用的开发一来,我一直使用Linux环境作为工作环境。这样的好处是多方面的:
1.
相比Windows更优秀的内存消耗和管理
2. 更接近于实际应用部署环境的开发环境
3.
避免开发过程中的一些问题,如ADF自动生成的data binding文件名过长,超出windows支持最大长度导致的复制/压缩失败问题等
4.
开放系统后台,可以根据实际需求进行深度调优,如内存使用策略等

在使用数个月后,为Ubuntu分配的55GB
EXT4磁盘分区只剩余不足1G,导致在使用虚拟机的过程中经常报错。经多次清理软件包/内核无效后,使用Baobab工具对主要用户的HOME目录进行
分析,结果如下
由分析结果可见,Oracle/Middleware
/jdeveloper/jdev/bin 目录占用了18.1GB,绝大部分空闲磁盘空间均被此目录中文件占用。
检查bin目录,发现该目录下
包含许多300MB~800MB的 .hprof 文件及一定数量的 hs_err_pidxxxx.log
文件。同时发现jdeveloper内嵌Weblogic的domain目录,即
~/.jdeveloper/system11.1.1.2.36.55.36/DefaultDomain/
目录下也存在hs_err_pidxxxx.log文件。

.hprof文件由HPROF工具生成,是自JVM1.5版本以来以agent

library方式引入,内建于JVM的用于处理器及堆性能/错误分析工具。它可以生成二进制的dump文件,使用jHAT,NetBeans等工具可对
dump文件进行分析。可以看这里的简介

解决方法

1. 删除JDeveloper安装目录下
jdev/bin目录下的.hporf及log文件,删除~/.jdeveloper/system11.1.1.2.36.55.36/DefaultDomain/ 目录下的log文件
2. 修
改jdev/bin/jdev.conf,找到HPROF的配置部分,隐去语句
AddVMOption
-XX:+HeapDumpOnOutOfMemoryError

以防止自动生成dump文件。

ADF页面TaskFlow中不同jsff指定不同页面标题

常见的ADF页面开发逻辑为将相关页面开发为jsff,将jsff放入taskflow形成页面关联,将taskflow以region的形式放入
jspx。而页面的标题通常在jspx的document标签上进行设置。那么有没有可能根据taskflow中jsff的不同改变页面的标题呢?答案是
肯定的:

1. 去除jspx中document节点上title属性的设置
2.
在jsff页面jsp:root标签下新建<title></title>标签,声明想要的标题

JDeveloper / ADF 11.1.1.3.0 已经发布



JDeveloper / ADF
11g 的第二个产品维护发布版,版本号 11.1.1.3.0 (Build 5660) 已经可以下载了。


是一个维护版本,并不包括许多功能性的更新,更多的是bug的修正。

新的功能包括maven的大量更新,引入了remote
repository等;Spring的支持;最新数据库连接方式的支持;ADF BC view criteria 对于between/not
between的支持;少数组件的功能增强;以及ADF Mobile方面的部分更新。以及部分的bug修正。详细内容参见新功能与bug修正列表。附上新版本下载链接

Y450 Ubuntu 9.10 Mic 无声

解决办法是编译最新的ALSA驱动,步骤如下:
在ALSA网站下载driver, lib, utils三个源代码包,解压至不同路径。

alsa-driver
./configure
sudo make
sudo make install
sudo ./snddevices

alsa-lib
./configure
sudo make
sudo make install

alsa-utils
./configure
sudo make
sudo make install

之后运行sudo alsaconf,选择第一项Intel HDA,一路确认完成后重启系统即可。

ADF 拉伸控件以自适应浏览器

在开发ADF应用中的一个常见需求是使ADF控件自动拉伸以适应浏览器。这里有两种方法:

1. 通常开发者为了将控件横向扩展到接近浏览器宽度,将宽度设置为98%,如
<af:foo inlineStyle="98%" />
但是这里有一种更好的方法是使用AFStretchWidth这个样式类,则写法如下
<af:foo styleClass="AFStretchWidth" />

2. 使用可以自动扩展控件的Layout,列表如下

PanelStretchLayout,自动拉伸子控件,对于top, bottom, left, right可以将其宽度设为auto则可自动扩展 PanelTabbed,有一个属性stretchChildren,可以设置拉伸的子控件
* table,有一个属性columnStretching,可以设置一个需要拉伸的列(如设置Description字段自动拉伸)参考内容
Layout Tips - Stretching components to fit browser window
Stretching an ADF Faces Component to (near) 100%

更多的控件实例和布局最佳实践可以看这里

清除Linux的缓存cache

Linux的内存管理机制是尽最大可能的利用内存。这意味着当有程序占用内存时,该程序退出并不会导致内存被释放,当没有其他程序请求内存资源时,这些内存会成为缓存,以加快程序重新加载时的效率。

但是在某些情况下,cache占用太多也会导致程序认为内存不足而无法启动。这时就需要强制清空cache。以root权限执行如下命令即可:

sync; echo 3 > /proc/sys/vm/drop_caches

Apache2 编译方式增加模块



今天需要使用到 apache2 的 proxy_module 以及 proxy_http_module,由于原来编译apache时没有选择模块,因此这两个模块没有安装。安装步骤转载如下(以mod_rewrite为例):

——————————————————————————-

如果你的服务器apache还没有安装,那很简单,在编译apache时将mod_rewrite模块编译进去就可以,相关文档可以在http://man.ddvip.com/soft/apache2.2/misc/rewriteguide.html中找到。如果你的apache已经安装好了,现在只想编译出mod_rewrite.so模块,在apache中进行加载,下面我们就介绍这个方法。

以 RHEL5 操作系统进行举例:

1. 首次安装apache,在编译时增加–enable-rewrite选项。
如./configure –prefix=/usr/local/apachel –enable-so –enable-mods-shared=all –enable-rewrite –enable-cache
2. 增加mod_rewrite模块

部署ADF应用至Weblogic Managed Server

Weblogic Ver. 10.3.2.0
OS Ver. CentOS 5.4

Weblogic 的
AdminServer 提供console的功能,能够进行诸如数据源的创建管理、Weblogic集群的管理、Managed
Server的停止、状态监视等诸多功能。在实际使用环境中,将应用部署至AdminServer是不安全的,为其他访问应用的用户提供了访问
console的可能性。因此通常将应用部署至AdminServer下属的某一ManagedServer。

创建ManagedServer
进入Weblogic console,在 域结构 环境->服务器 中点击新建,指定ManagedServer名称及端口,即可创建ManagedServer。

启动ManagedServer
进入当前domain目录,运行./bin/startManagedWebLogic.sh <ManagedServer名称> 即可启动对应ManagedServer。

部署ADF应用至ManagedServer
首先调整ADF Runtime的部署目标,进入Weblogic Console,点击 域结构 中的 部署,分别点击左侧各个库,进入其详细信息。
在其 目标 标签页中,勾选计划部署ADF应用的ManagedServer,并保存。(若不进行该操作,则启动ADF应用时会因为缺少依赖库导致错误,如
[J2EE:160149]Error
while processing library references. Unresolved application library
references, defined in weblogic-application.xml: [Extension-Name:
adf.oracle.domain, exact-match: false], [Extension-Name:
oracle.jsp.next, exact-match: false].


确认依赖库文件的目标已勾选ManagedServer后,即可通过Console或EM部署ADF应用,需要注意的是在部署目标配置界面同样勾选ManagedServer,即可完成ADF应用向ManagedServer的部署。

RHEL5 使用 CentOS 的源升级

RHEL如果需要进行升级,必须购买RTN的帐号支付服务费用。而RHEL遵循开源协议,其每次发布
新版本时会同时发布其源代码。CentOS即为将其源代码重新编译而成的系统,号称和RHEL全兼容且同步更新。因此,版本相同的前提下,可以使用
CentOS的源作为RHEL的升级源,通过yum升级部分软件包甚至将整个RHEL升级为CentOS。本文使用RHEL 5.0
i386为例介绍如何配置yum并将RHEL 5.0升级为CentOS 5.4。

以下内容以root用户操作。


1. 选择一个合适的CentOS源,当前国内速度不错的CentOS镜像源为中科大CentOS源http://centos.ustc.edu.cn/
2. 从源的对应系统版本下载python-iniparse, yum, yum-fastestmirror, yum-metadata-parse这几个软件包,如本次示例应从路径 http://centos.ustc.edu.cn/centos/5/os/i386/CentOS/ 下下载上述四个软件包。
3. 删除系统中已经安装的yum,通过 rpm -qa | grep yum 命令检查系统中已经安装的yum包,并使用 rpm -e <package name> 命令将安装的yum包移除。

4. 进入CentOS yum软件包下载路径,运行 rpm -ivh *.rpm 安装下载的软件包。

5. 进入路径 /etc/yum.repos.d,查看该路径下文件,若存在CentOS-Base.repo,则将该文件备份后删除或移动到其他路径下。
cd /etc/yum.repos.d
mv ./CentOS-Base.repo CentOS.repo.bak

6. 下载CentOS-Base.repo.5
并放入路径 /etc/yum.repos.d,并将其重命名为CentOS-Base.repo。
cd /etc/yum.repos.d
wget http://centos.ustc.edu.cn/CentOS-Base.repo.5
7. 由于当前RHEL版本号问题,导致无法匹配源路径,因此需要修改CentOS-Base.repo,首先将其备份,后将其中所有$releasever修改为所需要的版本号,本次示例修改为5
8. 运行yum update,如果配置正确,应看到正在从服务器下载升级列表,准备升级。这一步需要注意,在包安装前会提示是否确认安装,可以通过yum -y update以默认确认的方式进行升级。
9. 升级完成后,检查/etc/yum.repos.d/CentOS-Base.repo,将版本号改回默认的$releasever。

Linux 环境下 VMware workstatin 7 NAT 端口映射

通常在配置vmware虚拟机时使用NAT网络,以避免局域网安全性的配置。但当服务器运行多台虚拟机,每台虚拟机均在某端口提供服务,需要远程访问该服务时,则需将虚拟机的目标端口映射至服务器的真实端口。

修改/etc/vmware/vmnet8/nat/nat.conf
我本机使用的nat虚拟网络为vmnet8,若使用不同虚拟网络则修改不同文件夹下的配置文件

在配置文件底部有如下字段
[incomingudp]

[incomingtcp]

incomingudp下填写UDP协议端口映射,incomingtcp下填写TCP端口映射
填写格式为
<物理主机端口号> = <虚拟机IP地址>:<虚拟机端口号>

示例如下
[incomingudp]
6260 = 192.168.68.130:6260
35000 = 192.168.68.131:15000
37223 = 192.168.68.132:17223
[incomingtcp]
6250 = 192.168.68.130:6250
20800 = 192.168.68.131:80

由于需要使用IP区分虚拟机,建议把虚拟机设置为固定IP地址。

完成设置后重启系统vmware服务,首先关闭所有运行中的虚拟机,后使用root权限执行/etc/init.d/vmware restart即可。