<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>java</title>
    <description>我自百花丛林中，  
爱幕玫瑰香最浓；
刘女娇媚胜花艳， 
群蝶环绕亦从荣</description>
    <link>http://gloryme.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>一个比较完整的 ANT 实例(转）</title>
        <author>gloryme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gloryme.javaeye.com">gloryme</a>&nbsp;
          链接：<a href="http://gloryme.javaeye.com/blog/210646" style="color:red;">http://gloryme.javaeye.com/blog/210646</a>&nbsp;
          发表时间: 2008年07月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">&lt;?xml version="1.0" encoding="gb2312"?&gt;   
&lt;project name="MyProject" default="dist" basedir="."&gt;    
&lt;!--//将name的值改为对应工程的名字   
    //将default的值改为需要的缺省任务（运行"&lt;SPAN class=hilite1&gt;ant&lt;/SPAN&gt;"不指明任务时执行的任务）   
--&gt;   
  
  
&lt;!--File and Directory Names  文件和目录设置   
  
  
  
  app.name             发布到tomcat的应用的名字   
  
  app.version          应用的版本标识   
  
  build.home           编译目标位置，默认为"build"  
  
  catalina.home        tomcat根目录位置   
  
  deploy.home          部署位置，默认为"${catalina.home}/webapps/${app.name}"  
  
  dist.home            war包位置，默认为"dist"  
                       
  
--&gt;   
  
  &lt;property name="app.name"      value="myapp"/&gt;    
&lt;!--//将value的值改为发布到tomcat的应用的名字   
    //例如：&lt;property name="app.name"      value="mytry"/&gt;    
--&gt;   
  &lt;property name="app.version"   value="1.0"/&gt;   
  &lt;property name="build.home"    value="build"/&gt;   
  &lt;property name="catalina.home" value="D:\Tomcat5.0"/&gt;    
&lt;!--//将value的值改为你安装tomcat的路径   
    //例如：&lt;property name="catalina.home" value="G:\jakarta-tomcat-4.0.1\"/&gt;   
--&gt;   
  &lt;property name="deploy.home"   value="${catalina.home}/webapps/${app.name}"/&gt;   
  &lt;property name="dist.home"     value="dist"/&gt;   
  
  
&lt;!--Compilation Control Options 编译控制选项   
  
  compile.debug        是否包含debug信息   
  
  compile.deprecation     
  
  compile.optimize     是否优化编译   
  
--&gt;   
  
  &lt;property name="compile.debug"       value="true"/&gt;   
  &lt;property name="compile.deprecation" value="false"/&gt;   
  &lt;property name="compile.optimize"    value="true"/&gt;   
  
  
&lt;!-- Compilation Classpath 路径设置--&gt;   
  
  &lt;path id="compile.classpath"&gt;   
  
    &lt;pathelement location="${catalina.home}/common/classes"/&gt;   
    &lt;fileset dir="${catalina.home}/common/lib"&gt;   
      &lt;include name="*.jar"/&gt;   
    &lt;/fileset&gt;   
  
  
  &lt;/path&gt;   
  
&lt;!--Clean Target 删除先前的目录结构--&gt;   
  
  &lt;target name="clean"  
   description="Delete old build and dist directories"&gt;   
    &lt;delete dir="${build.home}"/&gt;   
    &lt;delete dir="${dist.home}"/&gt;   
  &lt;/target&gt;   
  
&lt;!--Compile Target 编译代码，在这之前先由prepare建立目录结构--&gt;   
  
  &lt;target name="compile" depends="prepare"  
   description="Compile Java sources"&gt;   
  
    &lt;!-- Compile Java classes as necessary --&gt;   
    &lt;mkdir    dir="${build.home}/WEB-INF/classes"/&gt;   
    &lt;javac srcdir="src"  
          destdir="${build.home}/WEB-INF/classes"  
           debug="${compile.debug}"  
     deprecation="${compile.deprecation}"  
        optimize="${compile.optimize}"&gt;   
        &lt;classpath refid="compile.classpath"/&gt;   
    &lt;/javac&gt;   
  
    
    &lt;copy  todir="${build.home}/library/classes"&gt;   
    &lt;fileset dir="src" includes="**/*.properties"/&gt;   
    &lt;/copy&gt;   
  
  &lt;/target&gt;   
  
  
&lt;!--Deploy Target 在tomcat下建立应用目录并部署应用--&gt;   
  
  &lt;target name="deploy" depends="compile"  
   description="Deploy application to servlet container"&gt;   
  
    &lt;!-- Copy the contents of the build directory --&gt;   
    &lt;mkdir     dir="${deploy.home}"/&gt;   
    &lt;copy    todir="${deploy.home}"&gt;   
      &lt;fileset dir="${build.home}"/&gt;   
    &lt;/copy&gt;   
  
    &lt;mkdir  dir="${deploy.home}/WEB-INF/lib"/&gt;   
  
  
  &lt;/target&gt;   
  
  
&lt;!--Dist Target 将应用打包成war，在这之前先执行javadoc和deploy--&gt;   
  
  &lt;target name="dist" depends="deploy,javadoc"  
   description="Create binary distribution"&gt;   
  
    &lt;copy    todir="${dist.home}/docs"&gt;   
      &lt;fileset dir="docs"/&gt;   
    &lt;/copy&gt;   
  
    &lt;jar jarfile="${dist.home}/${app.name}.war"  
         basedir="${deploy.home}"/&gt;   
  
  &lt;/target&gt;   
  
&lt;!--Javadoc Target 生成javadoc--&gt;   
  
  &lt;target name="javadoc" depends="compile"  
   description="Create Javadoc API documentation"&gt;   
  
    &lt;mkdir          dir="${dist.home}/docs/api"/&gt;   
    &lt;javadoc sourcepath="src"  
                destdir="${dist.home}/docs/api"  
           packagenames="hello.*"/&gt;   
&lt;!--//改为需要制作javadoc的包名。如果不做javadoc，这里不必改。例如：packagenames="hello.*"/&gt;--&gt;   
  &lt;/target&gt;   
  
&lt;!--Prepare Target 建立打包的目的目录结构--&gt;   
  
  &lt;target name="prepare"&gt;   
  
    &lt;mkdir  dir="${build.home}"/&gt;   
    &lt;copy todir="${build.home}"&gt;   
      &lt;fileset dir="web"/&gt;   
    &lt;/copy&gt;   
  &lt;/target&gt;   
&lt;/project&gt;  
</pre>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://gloryme.javaeye.com/blog/210646#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 02 Jul 2008 15:26:59 +0800</pubDate>
        <link>http://gloryme.javaeye.com/blog/210646</link>
        <guid>http://gloryme.javaeye.com/blog/210646</guid>
      </item>
      <item>
        <title>如何解压cpio.gz 文件</title>
        <author>gloryme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gloryme.javaeye.com">gloryme</a>&nbsp;
          链接：<a href="http://gloryme.javaeye.com/blog/190079" style="color:red;">http://gloryme.javaeye.com/blog/190079</a>&nbsp;
          发表时间: 2008年05月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>解压文件 <br />第一种方法： <br />zcat&nbsp;&nbsp;lnx_920_disk1.cpio.gz&nbsp;|&nbsp;cpio&nbsp;&ndash;idmv <br />zcat&nbsp;&nbsp;lnx_920_disk1.cpio.gz&nbsp;|&nbsp;cpio&nbsp;&ndash;idmv <br />zcat&nbsp;&nbsp;lnx_920_disk1.cpio.gz&nbsp;|&nbsp;cpio&nbsp;&ndash;idmv <br />第二种方法 ：<br />第一步：&nbsp; <br />gunzip&nbsp;lnx_920_disk1.cpio.gz <br />gunzip&nbsp;lnx_920_disk2.cpio.gz <br />gunzip&nbsp;lnx_920_disk3.cpio.gz <br />第二步： <br />cpio&nbsp;-idmv&nbsp;&lt;&nbsp;lnx_920_disk1.cpio <br />cpio&nbsp;-idmv&nbsp;&lt;&nbsp;lnx_920_disk2.cpio <br />cpio&nbsp;-idmv&nbsp;&lt;&nbsp;lnx_920_disk3.cpio</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://gloryme.javaeye.com/blog/190079#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 06 May 2008 11:07:28 +0800</pubDate>
        <link>http://gloryme.javaeye.com/blog/190079</link>
        <guid>http://gloryme.javaeye.com/blog/190079</guid>
      </item>
      <item>
        <title>LINUX下运行－JDK安装和环境变量设置</title>
        <author>gloryme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gloryme.javaeye.com">gloryme</a>&nbsp;
          链接：<a href="http://gloryme.javaeye.com/blog/185900" style="color:red;">http://gloryme.javaeye.com/blog/185900</a>&nbsp;
          发表时间: 2008年04月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>环境变量设置</p>
<p>&nbsp;在终端中输入命令</p>
<p>gedit&nbsp;/etc/profile.d/java.sh 这样可以在所有的用户中使用</p>
<p>&nbsp;在新的java.sh中输入以下内容：</p>
<p><strong><span style="color: #3366ff;">JAVA_HOME=/usr/java/j2sdk1.4.2_01</span></strong></p>
<p><strong><span style="color: #3366ff;">CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib </span></strong></p>
<p><strong><span style="color: #3366ff;">PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH</span></strong></p>
<p><strong><span style="color: #3366ff;">export&nbsp;&nbsp; JAVA_HOME CLASSPATH PATH</span></strong></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://gloryme.javaeye.com/blog/185900#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 23 Apr 2008 14:59:37 +0800</pubDate>
        <link>http://gloryme.javaeye.com/blog/185900</link>
        <guid>http://gloryme.javaeye.com/blog/185900</guid>
      </item>
      <item>
        <title>Linux下挂载window下硬盘(转）</title>
        <author>gloryme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gloryme.javaeye.com">gloryme</a>&nbsp;
          链接：<a href="http://gloryme.javaeye.com/blog/184041" style="color:red;">http://gloryme.javaeye.com/blog/184041</a>&nbsp;
          发表时间: 2008年04月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong>1.加挂FAT32文件</strong></p>
<p><strong>&nbsp;&nbsp; mount -t vfat /dev/hda6 /mnt/d </strong></p>
<p>　　在实际中操作中，直接加挂一个windows的分区，中文的文件名和目录名会出现乱码，为了避免这种情况可以指定字符集，命令如下： </p>
<p>&nbsp;</p>
<table cellspacing="0" border="1" align="center" width="400" cellpadding="2">
<tbody>
<tr>
<td class="code" bgcolor="#e6e6e6" style="FONT-SIZE: 9pt">　　mount /dev/hda6 /mnt/d -o codepage=936,iocharset=cp936 　　mount -t vfat /dev/hda6 /mnt/d -o codepage=936,iocharset=cp936
<pre></pre>
</td>
</tr>
</tbody>
</table>
<p>　　注意：cp936是指简体中文，cp950是指繁体中文。</p>
<p>　<strong>2.加挂NTFS文件</strong></p>
<p>　　在目前多数的Linux版本上，需要重编译Linux核心才能，加挂NTFS分区(编译方法请参阅其它文章)。核心支持NTFS后，可以用以下命令加挂： </p>
<p>　　mount -t ntfs /dev/hda2 /mnt/c </p>
<p>　　同样对于中文的文件名和目录名会出现乱码的问题可以指定字符集，不过和加挂vfat分区不同，实际中用以下命令是可行的： </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<table cellspacing="0" border="1" align="center" width="400" cellpadding="2">
<tbody>
<tr>
<td class="code" bgcolor="#e6e6e6" style="FONT-SIZE: 9pt">　　mount -t ntfs -o iocharset=cp936 /dev/hda2 /mnt/c -r 　　mount -t ntfs -o iocharset=cp936,rw /dev/hda2 /mnt/c
<pre></pre>
</td>
</tr>
</tbody>
</table>
3.加挂U盘上的文件
<p>　　现在使用U盘的人越来越多了，其实在Linux下使用U盘也非常简单，Linux对USB设备有很好的支持，在你插入U盘后，U盘被识别为一个SCSI盘，通常您用以下命令就能加挂U盘上的文件</p>
<p>　　mount /dev/sda1 /usb同样对于中文的文件名和目录名会出现乱码的问题可以指定字符集，命令类似于上面对FAT32介绍的mount /dev/sda1 /usb -o pagecode=936,iocharset=cp936 </p>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://gloryme.javaeye.com/blog/184041#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 18 Apr 2008 11:46:09 +0800</pubDate>
        <link>http://gloryme.javaeye.com/blog/184041</link>
        <guid>http://gloryme.javaeye.com/blog/184041</guid>
      </item>
      <item>
        <title>read as 4 linux_oracle安装文档</title>
        <author>gloryme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gloryme.javaeye.com">gloryme</a>&nbsp;
          链接：<a href="http://gloryme.javaeye.com/blog/180800" style="color:red;">http://gloryme.javaeye.com/blog/180800</a>&nbsp;
          发表时间: 2008年04月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">RedHat Enterprise Linux AS4 安装oracle9i 
<br />RedHat Enterprise Linux AS4 安装oracle9i
<br />
<br />最近一直在使用Linux,试着安装了一下oracle9i,下面是我在安装过程中,参考别人的文章,又整理了一下,安装过程中没有出现问题.。
<br />
<br />1. 创建用户与组：
<br />-------------------------
<br />添加安装过程中需要用到的用户和组，这当中会用到二个用户一个是root，一个是oracle。切换为 Root 用户并执行下列命令
<br />
<br />$ su -
<br />
<br /># groupadd oinstall
<br /># groupadd dba
<br /># useradd -g oinstall -G dba oracle
<br /># passwd oracle
<br />
<br />2. 创建目录。
<br />--------------------------
<br />我们将把所有东西都安装到在 /opt/oracle 目录下：
<br />
<br />mkdir /opt/oracle
<br />mkdir /opt/oracle/product
<br />mkdir /opt/oracle/product/9.2
<br />chown –R oracle.oinstall /opt/oracle
<br />mkdir /var/opt/oracle
<br />chown oracle.dba /var/opt/oracle
<br />chmod 755 /var/opt/oracle
<br />
<br />3. 预安装（系统配置）：
<br />---------------------------
<br />
<br />3.1 安装这些兼容性库：
<br />.完全安装linux as4 （完全安装的话，系统就只差两个补丁compat-libcwait-2.0-2.i386.rpm 和compat-oracle-rhel4-1.0-5.i386.rpm ，若你不是完全安装的话 那就要检查很多的组件是不是安装了
<br />以下这些是必须的
<br />compat-db-4.1.25-9 
<br />compat-gcc-32-3.2.3-47.3 
<br />compat-gcc-32-c++-3.2.3-47.3 
<br />compat-oracle-rhel4-1.0-3 
<br />compat-libcwait-2.0-1 
<br />compat-libgcc-296-2.96-132.7.2 
<br />compat-libstdc++-296-2.96-132.7.2 
<br />compat-libstdc++-33-3.2.3-47.3 
<br />gcc-3.4.3-9.EL4 
<br />gcc-c++-3.4.3-9.EL4 
<br />gnome-libs-1.4.1.2.90-44 
<br />gnome-libs-devel-1.4.1.2.90-44 
<br />libaio-devel-0.3.102-1 
<br />libaio-0.3.102-1 
<br />make-3.80-5 
<br />openmotif21-2.1.30-11 
<br />xorg-x11-deprecated-libs-devel-6.8.1-23.EL 
<br />xorg-x11-deprecated-libs-6.8.1-23.EL 
<br />
<br />可以使用命令来查看是否已安装了这些包
<br /># rpm -qa | grep ‘compat’ 
<br />rpm -qa | grep gcc 等
<br />方法是一样的，没有的话，如果没有可以采用#rpm –ivh 来安装，具体大多数在第三、四张盘上。并且，这些包有一定的依赖性，这就需要你来动手试了。
<br />但compat-libcwait-2.0-2.i386.rpm 和compat-oracle-rhel4-1.0-5.i386.rpm光盘中没有
<br />可以从网站上下载 这些补丁还是好找的
<br />地址：http://oss.oracle.com/projects/compat-oracle/files/RedHat/
<br />
<br /> 
<br />
<br />p3006854_9204_LINUX.zip 安装前就要打好的补丁
<br />p2617419_210_GENERIC.zip 安装后要打的（这只是一个伴随补丁，只要设置它的环境变量）
<br />p3238244_9204_LINUX.zip 安装后要打的9204的补丁,修复agent错误的补丁. 
<br />compat-libcwait-2.0-2.i386.rpm LINUX AS 4 的补丁在安装前就要打
<br />compat-oracle-rhel4-1.0-5.i386.rpm LINUX AS 4 的补丁在安装前就要打
<br />
<br />3.2 作安装前准备工作
<br />从Oracle官方网站下载Oracle9i安装文件并使用如下命令解包
<br />ship_9204_linux_disk1.cpio.gz | cpio –idmv
<br />ship_9204_linux_disk2.cpio.gz | cpio –idmv
<br />ship_9204_linux_disk3.cpio.gz | cpio –idmv
<br />然后会有Disk1 Disk2 Disk3三个子目录。
<br />
<br />在安装之前需要打一个补丁
<br />为了应用这个补丁，可以运行：
<br />$su – root
<br />#unzip p3006854_9204_LINUX.zip
<br />Archive：p3006854_9204_LINUX.zip
<br />creating：3006854/
<br />inflating：3006854/rhel3_pre_install.sh
<br />inflating：3006854/README.txt
<br />
<br />#cd 3006854
<br />#sh rhel_pre_install.sh
<br />Applying patch…
<br />Patch successfully applied
<br />
<br />rpm -Uvh compat-libcwait-2.0-2.i386.rpm
<br />rpm -Uvh compat-oracle-rhel4-1.0-5.i386.rpm
<br />
<br />
<br />3.3 设置内核参数以便能够成功启动：
<br />
<br />修改 /etc/sysctl.conf 这个文件，加入以下的语句： 
<br />
<br />kernel.shmmax = 536870912 这里设置为物理内存的一半 1G内存的话为：512×1024×1024
<br />kernel.shmmni = 4096 2G   内存的话为：1024×1024×1024
<br />kernel.shmall = 2097152 
<br />kernel.sem = 250 32000 100 128 其他的值都不用动
<br />fs.file-max = 65536 
<br />net.ipv4.ip_local_port_range = 1024 65000
<br />
<br />sem  4个参数依次为 SEMMSL(每个用户拥有信号量最大数)；
<br />         SEMMNS(系统信号量最大数)；
<br />          SEMOPM(每次semopm系统调用操作数)；
<br />         SEMMNI(系统辛苦量集数最大数).
<br />Shmmax 最大共享内存2GB 物理内存如果小的话可以设置成 536870912.
<br />Shmmni  最小共享内存 4096KB.
<br />Shmall   所有内存大小.
<br />
<br />
<br />执行sysctl以反映修改 使内核参数立刻生效，重启也可以
<br /># sysctl –p 
<br />或您可以在运行时通过执行下列命令更改内核参数：
<br />
<br /># echo 250 32000 100 128 &gt; /proc/sys/kernel/sem
<br /># echo 536870912 &gt; /proc/sys/kernel/shmmax
<br /># echo 4096 &gt; /proc/sys/kernel/shmmni
<br /># echo 2097152 &gt; /proc/sys/kernel/shmall
<br /># echo 65536 &gt; /proc/sys/fs/file-max
<br /># echo 1024 65000 &gt; /proc/sys/net/ipv4/ip_local_port_range
<br />
<br />3.4 设置oracle对文件的要求
<br />编辑文件：/etc/security/limits.conf 加入以下语句： 
<br />
<br />oracle 　　　soft  nofile 　　 65536 
<br />oracle 　　　hard 　　  nofile      65536 
<br />oracle 　　　soft  nproc 　　  16384 
<br />oracle 　　　hard 　　  nproc 　　  16384
<br />
<br />4. 设置环境变量
<br />vi /home/oracle/.bash_profile或 vi /home/oracle/.bashrc
<br />加入以下内容
<br />#oracle 9i
<br />export ORACLE_BASE=/opt/oracle
<br />export ORACLE_HOME=/opt/oracle/product/9.2
<br />export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
<br />#export DISPLAY=”192.168.9.205:0.0” (127.0.0.1:0.0)
<br />export ORACLE_OWNER=oracle
<br />export ORACLE_SID=ora9i  #(数据库全局变量名)
<br />export ORACLE_TERM=xterm  #(xterm窗口模式 vt100 终端调试模式)
<br />export LD_ASSUME_KERNEL=2.4.19 #果安装在AS3 上此处为2.4.1
<br />export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data 
<br />export THREADS_FLAG=native
<br />export LD_LIBRARY_PATH=/opt/oracle/product/9.2/lib:$LD_LIBRARY_PATH
<br />export LANG=en_US  #(设置语言英文或export NLS_LANG='AMERCIAN')
<br />#oracle 9i
<br />#
<br />#根据您本国的情况更改这个 NLS 设置：
<br />#示例：
<br /># german_germany.we8iso8859p15, american_america.we8iso8859p2 etc.
<br />#
<br />export NLS_LANG='croatian_croatia.ee8iso8859p2'
<br />如果您需要其它的国家设置（这些是克罗地亚的），请参考这里的支持设置，并对 NLS_LANG 变量进行相应更改。
<br />
<br />5、gcc降级 
<br />#su – root 
<br />#mv /usr/bin/gcc /usr/bin/gcc34 
<br />#ln –s /usr/bin/gcc32 /usr/bin/gcc 
<br />#mv /usr/bin/g++ /usr/bin/g++34 
<br />#ln –s /usr/bin/g++32 /usr/bin/g++
<br />有关GCC的降级别很多人都说若不降级的话安装可能会出现错误，也可以不降级，有时也不会发生错误。
<br />
<br />
<br />5. 安装：
<br />------------------------
<br />
<br />5.1
<br />以 Root 用户登录并允许用户 oracle 向 X 显示器写入：
<br />su -
<br />xhost +  
<br />#如果x-window server没有启动会出现如下的错误:
<br />Xlib:connection to ":0.0" refused by server
<br />No protocol specified
<br />
<br />新开一个窗口,登录为 oracle 用户：
<br />#su - oracle
<br />进入Disk1目录,cd Disk1
<br />./runInstaller
<br />安装完成
<br />
<br />5.2 .安装完成后，有个提示 
<br />让你运行一下 /opt/ora9/root.sh
<br />然后输入oracle_home 的路径
<br />/opt/ora9/product/9.2/bin
<br />此时安装就算完成了
<br />
<br />
<br />5.3 为安装好的9204打相应的补丁
<br />解压缩那个伴随的补丁
<br />
<br />#unzip p2617419_210_GENERIC.zip 
<br />用 pwd 看看你的路径
<br />我看到的是 /home/oracle/Opatch
<br />然后 export export PATH=$PATH:/home/oracle/OPatch:/sbin
<br />此步骤就到这就不用管了
<br />
<br />然后解压缩另外一个补丁
<br />unzip p3238244_9204_LINUX.zip 
<br />解压缩后用ll 看看他的owner是谁
<br />若不是的oracle话就chown oracle /home/oracle/3238244
<br />
<br /># cd 3238244 
<br /># opatch apply 
<br />
<br />若安装时报错如权限不足
<br />chmod 755 /home/oracle/3238244
<br />
<br />最后若你安装的是中文的AS4　每次进到终端的时候要用DBCA的话还要用export LANG=en_US
<br />因为我在 .bash_profile中没有写，有个方法 修该/etc/sysconfig/i18n文件 其中默认的为
<br />LANG=zh_CN.UTF-8 更改为 LANG=en_US.UTF-8 然后source i18n 文件就OK了
<br />
<br />安装完成运行DBCA 正常，也可以正常的建库
<br />sqlplus / nolog
<br />等都没有问题
<br />
<br /></pre>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://gloryme.javaeye.com/blog/180800#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 09 Apr 2008 13:44:02 +0800</pubDate>
        <link>http://gloryme.javaeye.com/blog/180800</link>
        <guid>http://gloryme.javaeye.com/blog/180800</guid>
      </item>
      <item>
        <title>linux 下oracle安装</title>
        <author>gloryme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gloryme.javaeye.com">gloryme</a>&nbsp;
          链接：<a href="http://gloryme.javaeye.com/blog/178000" style="color:red;">http://gloryme.javaeye.com/blog/178000</a>&nbsp;
          发表时间: 2008年03月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          如果一切正常，OUI会出现The Installation Of Oracle9i Database Was successful.的字样，这表明你的Oracle9i数据库安装正常了，如果需要安装其它的内容按Next Install钮进行其它内容的安装，否则按Exit退出安装。<br />　　使用Oracle 9i 数据库　<br />　　安装完毕后Oracle数据库会自动启动，下面我们用实际超作来说明一下Oracle 9i数据库的启动和关闭。　<br />　　以oracle用户登陆数据库，开个控制台窗口；　<br />　　关闭Oracle 9i 数据库　<br />　　[oracle@wing /oracle]$ sqlplus " / as sysdba" //以sysdba用户登陆数据库　<br />　　<br />　　SQL*Plus: Release 9.0.1.0.0 - Production on Wed Jul 11 15:35:31 2001　<br />　　<br />　　(c) Copyright 2001 Oracle Corporation. All rights reserved.　<br />　　Connected to:　<br />　　Oracle9i Enterprise Edition Release 9.0.1.0.0 - Production　<br />　　With the Partitioning option　<br />　　JServer Release 9.0.1.0.0 - Production　<br />　　运行shudown命令关闭数据库　<br />　　SQL> shutdown　<br />　　Database closed.　<br />　　Database dismounted.　<br />　　ORACLE instance shut down.　<br />　　SQL>　<br />　　启动Oracle 9i 数据库　<br />　　[oracle@wing bin]$ sqlplus " / as sysdba"　<br />　　<br />　　SQL*Plus: Release 9.0.1.0.0 - Production on Wed Jul 11 16:00:59 2001　<br />　　<br />　　(c) Copyright 2001 Oracle Corporation. All rights reserved.　<br />　　<br />　　Connected to an idle instance.　<br />　　<br />　　SQL> startup　<br />　　ORACLE instance started.　<br />　　<br />　　Total System Global Area 336356520 bytes　<br />　　Fixed Size 279720 bytes　<br />　　Variable Size 268435456 bytes　<br />　　Database Buffers 67108864 bytes　<br />　　Redo Buffers 532480 bytes　<br />　　Database mounted.　<br />　　Database opened.　<br />　　SQL>　<br />　　<br />　　启动Oracle 9i监听程序　<br />　　Oracle的监听程序主要是为客户端的连接提供接口　<br />　　[oracle@wing bin]$ lsnrctl　<br />　　<br />　　LSNRCTL for Linux: Version 9.0.1.0.0 - Production on 11-JUL-2001 16:12:17　<br />　　<br />　　Copyright (c) 1991, 2001, Oracle Corporation. All rights reserved.　<br />　　<br />　　Welcome to LSNRCTL, type "help" for information.　<br />　　<br />　　LSNRCTL> start　<br />　　Starting /oracle/product/9.0.1/bin/tnslsnr: please wait...　<br />　　<br />　　TNSLSNR for Linux: Version 9.0.1.0.0 - Production　<br />　　System parameter file is /oracle/product/9.0.1/network/admin/listener.ora　<br />　　Log messages written to /oracle/product/9.0.1/network/log/listener.log　<br />　　Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))　<br />　　Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=wing)(PORT=1521)))　<br />　　<br />　　Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))　<br />　　STATUS of the LISTENER　<br />　　------------------------　<br />　　Alias LISTENER　<br />　　Version TNSLSNR for Linux: Version 9.0.1.0.0 - Production　<br />　　Start Date 11-JUL-2001 16:12:58　<br />　　Uptime 0 days 0 hr. 0 min. 0 sec　<br />　　Trace Level off　<br />　　Security OFF　<br />　　SNMP OFF　<br />　　Listener Parameter File /oracle/product/9.0.1/network/admin/listener.ora　<br />　　Listener Log File /oracle/product/9.0.1/network/log/listener.log　<br />　　Listening Endpoints Summary...　<br />　　(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))　<br />　　(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=wing)(PORT=1521)))　<br />　　Services Summary...　<br />　　Service "PLSExtProc" has 1 instance(s).　<br />　　Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...　<br />　　Service "oracle" has 1 instance(s).　<br />　　Instance "oracle", status UNKNOWN, has 1 handler(s) for this service...　<br />　　The command completed successfully　<br />　　LSNRCTL>　<br />　　关闭Oracle 9i监听程序　<br />　　[oracle@wing bin]$ lsnrctl　<br />　　<br />　　LSNRCTL for Linux: Version 9.0.1.0.0 - Production on 11-JUL-2001 16:12:17　<br />　　<br />　　Copyright (c) 1991, 2001, Oracle Corporation. All rights reserved.　<br />　　<br />　　Welcome to LSNRCTL, type "help" for information.　<br />　　LSNRCTL> stop　<br />　　Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))　<br />　　The command completed successfully　<br />　　LSNRCTL>　<br />　　<br />　　关闭Oracle Web Server　<br />　　cd $ORACLE_HOME/Apache/Apache/bin　<br />　　./stopJServ.sh　<br />　　/oracle/product/9.0.1/Apache/Apache/bin/apachectl stop: httpd stopped　<br />　　<br />　　启动Oracle Web Server　<br />　　cd $ORACLE_HOME/Apache/Apache/bin[oracle@wing bin]$ ./startJServ.sh　<br />　　/oracle/product/9.0.1/Apache/Apache/bin/apachectl start: httpd started　<br />　　启动Oracle Web Server后默认的端口号是7777　<br />　　在客户端浏览器地址栏输入http://xxx.xx.xxx.xxx:7777/　<br />　　如果浏览器出现以下界面则表示Oracle Web Server运行正常。
          <br/><br/>
          <span style="color:red;">
            <a href="http://gloryme.javaeye.com/blog/178000#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 31 Mar 2008 12:49:53 +0800</pubDate>
        <link>http://gloryme.javaeye.com/blog/178000</link>
        <guid>http://gloryme.javaeye.com/blog/178000</guid>
      </item>
      <item>
        <title>yum命令详解(linux命令)(转)</title>
        <author>gloryme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gloryme.javaeye.com">gloryme</a>&nbsp;
          链接：<a href="http://gloryme.javaeye.com/blog/176638" style="color:red;">http://gloryme.javaeye.com/blog/176638</a>&nbsp;
          发表时间: 2008年03月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          yum是什么?(linux命令)<br />一. yum是什么<br />yum = Yellow dog Updater, Modified<br />主要功能是更方便的添加/删除/更新RPM包.<br />它能自动解决包的倚赖性问题.<br />它能便于管理大量系统的更新问题<br />注:为什么要使用yum而不用apt,最简单的原因,Fedora自带<br /><br />二. yum特点<br />*可以同时配置多个资源库(Repository)<br />*简洁的配置文件(/etc/yum.conf)<br />*自动解决增加或删除rpm包时遇到的倚赖性问题<br />*使用方便<br />*保持与RPM数据库的一致性<br /><br />三. yum安装<br />Fedora自带<br />#rpm -ivh yum-2.0.4-2.noarch.rpm<br /><br />四. yum配置<br />注:修改和增加配置文件中的资源库,加快下载速度和拥有更多可更新的rpm包<br />将/etc/yum.conf的内容全部替换为<br />[main]<br />cachedir=/var/cache/yum<br />debuglevel=2<br />logfile=/var/log/yum.log<br />pkgpolicy=newest<br />distroverpkg=fedora-release<br />tolerant=1<br />exactarch=1<br /><br />[fedora-us-1]<br />name=Fedora Core 1 -- Fedora US mirror<br />baseurl=ftp://mirrors.kernel.org/fedora.us/fedora/fedora/1/i386/yum/os<br /><br />[fedora-us-1-updates]<br />name=Fedora Core 1 updates -- Fedora US mirror<br />baseurl=ftp://mirrors.kernel.org/fedora.us/fedora/fedora/1/i386/yum/updates<br /><br />[fedora-us-1-stable]<br />name=Fedora Linux (stable) for Fedora Core 1 -- Fedora US mirror<br />baseurl=ftp://mirrors.kernel.org/fedora.us/fedora/fedora/1/i386/yum/stable<br /><br />[freshrpms]<br />name=Fedora Linux $releasever - $basearch - freshrpms<br />baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms<br /><br /><br />五. yum应用<br />注:当第一次使用yum或yum资源库有更新时,yum会自动下载所有所需的headers放置于/var/cache/yum目录下,所需时间可能较长.<br /><br />检查有哪些可更新的rpm包<br />#yum check-update<br /><br />安装rpm包,使xmms可以播放mp3<br />#yum install xmms-mp3<br /><br />安装mplayer,同时自动安装相关的软件<br />#yum install mplayer<br /><br />删除licq包,同时删除与该包有倚赖性的包<br />#yum remove licq<br />注:同时会提示删除licq-gnome,licq-qt,licq-text,非常方便<br /><br />系统更新(更新所有可以升级的rpm包,包括kernel)<br />#yum -y update<br /><br />每天定期执行系统更新<br />#chkconfig yum on<br />#service yum start<br /><br /><br />六. yum指令详解<br />*rpm包的更新<br /><br />检查可更新的rpm包<br />#yum check-update<br /><br />更新所有的rpm包<br />#yum update<br /><br />更新指定的rpm包,如更新kernel和kernel source<br />#yum update kernel kernel-source<br /><br />大规模的版本升级,与yum update不同的是,连旧的淘汰的包也升级<br />#yum upgrade<br /><br /><br />*rpm包的安装和删除<br /><br />安装rpm包,如xmms-mp3<br />#yum install xmms-mp3<br /><br />删除rpm包,包括与该包有倚赖性的包<br />#yum remove licq<br />注:同时会提示删除licq-gnome,licq-qt,licq-text<br /><br /><br />*yum暂存(/var/cache/yum/)的相关参数<br />清除暂存中rpm包文件<br />#yum clean packages<br /><br />清除暂存中rpm头文件<br />#yum clean headers<br /><br />清除暂存中旧的rpm头文件<br />#yum clean oldheaders<br /><br />清除暂存中旧的rpm头文件和包文件<br />#yum clean 或#yum clean all<br />注:相当于yum clean packages + yum clean oldheaders<br /><br /><br />*rpm包列表<br /><br />列出资源库中所有可以安装或更新的rpm包<br />#yum list<br /><br />列出资源库中特定的可以安装或更新以及已经安装的rpm包<br />#yum list mozilla<br />#yum list mozilla*<br />注:可以在rpm包名中使用匹配符,如列出所有以mozilla开头的rpm包<br /><br />列出资源库中所有可以更新的rpm包<br />#yum list updates<br /><br />列出已经安装的所有的rpm包<br />#yum list installed<br /><br />列出已经安装的但是不包含在资源库中的rpm包<br />#yum list extras<br />注:通过其它网站下载安装的rpm包<br /><br /><br />*rpm包信息显示(info参数同list)<br /><br />列出资源库中所有可以安装或更新的rpm包的信息<br />#yum info<br /><br />列出资源库中特定的可以安装或更新以及已经安装的rpm包的信息<br />#yum info mozilla<br />#yum info mozilla*<br />注:可以在rpm包名中使用匹配符,如列出所有以mozilla开头的rpm包的信息<br /><br />列出资源库中所有可以更新的rpm包的信息<br />#yum info updates<br /><br />列出已经安装的所有的rpm包的信息<br />#yum info installed<br /><br />列出已经安装的但是不包含在资源库中的rpm包的信息<br />#yum info extras<br />注:通过其它网站下载安装的rpm包的信息<br /><br /><br />*搜索rpm包<br />搜索匹配特定字符的rpm包<br />#yum search mozilla<br />注:在rpm包名,包描述等中搜索<br /><br />搜索有包含特定文件名的rpm包<br />#yum provides realplay<br /><br />七. 安全的更新freshrpms.net的rpm包<br />安装freshrpms.net的GPG key<br />#rpm --import http://freshrpms.net/packages/RPM-GPG-KEY.txt<br /><br />编辑/etc/yum.conf,增加以下信息到尾部<br />[freshrpms]<br />name=Fedora Linux $releasever - $basearch - freshrpms<br />baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms<br />gpgcheck=1<br /><br />注:<br />检查GPG Key<br /># rpm -qa gpg-pubkey*<br /><br />显示Key信息<br />#rpm -qi gpg-pubkey-e42d547b-3960bdf1<br /><br />删除Key<br />#rpm -e gpg-pubkey-e42d547b-3960bdf1
          <br/><br/>
          <span style="color:red;">
            <a href="http://gloryme.javaeye.com/blog/176638#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 27 Mar 2008 10:29:09 +0800</pubDate>
        <link>http://gloryme.javaeye.com/blog/176638</link>
        <guid>http://gloryme.javaeye.com/blog/176638</guid>
      </item>
      <item>
        <title>关于LOG的输出 (转)</title>
        <author>gloryme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gloryme.javaeye.com">gloryme</a>&nbsp;
          链接：<a href="http://gloryme.javaeye.com/blog/176562" style="color:red;">http://gloryme.javaeye.com/blog/176562</a>&nbsp;
          发表时间: 2008年03月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在要输出的类xxxAction的开头写下:<br />private ABC logger = ABC.getInstance(xxxAction.class);<br />在要输出信息类的方法中写入:<br />StackTraceElement stack[] = (new Throwable()).getStackTrace();<br />logger.info("Now in xxxx"+" And this method called by: "+stack[1].toString());<br /><br />或者<br /><br />StackTraceElement stack[] = (new Throwable()).getStackTrace();<br />for(int i=1;i&lt;=stack.length;i++){ String inStackValue = stack[i].toString(); logger.info("++++++++++++++++"+inStackValue+"+++++++++++++"); } 就可以知道相关详细信息。 实际自定义的输出LOG的类: public class ABC{ private ABC() { super(); } private String strClassName = null; private static int I_LEVEL_NONE = -1; private static int I_LEVEL_FATAL = 0; private static int I_LEVEL_ERROR = 1; private static int I_LEVEL_WARN = 2; private static int I_LEVEL_INFO = 3; private static int I_LEVEL_DEBUG = 4; private static int I_LEVEL_TRACE = 5; private static int I_LEVEL_DEFAULT = I_LEVEL_INFO; private static final String STR_LEVEL_NAME[] = { "FATAL", "ERROR", "WARN ", "INFO ", "DEBUG", "TRACE" }; private void setStrClassName(String strClassName) { this.strClassName = strClassName; } private String getStrClassName() { return strClassName; } public static ABC getInstance(Class cls) { ABC abc = new ABC (); if (cls == null) { abc .setStrClassName(null); } else { abc .setStrClassName(cls.getName()); } return abc ; } public void fatal(String strLog) { print0(I_LEVEL_FATAL, strLog); } public void error(String strLog) { print0(I_LEVEL_ERROR, strLog); } public void warn(String strLog) { print0(I_LEVEL_WARN, strLog); } public void info(String strLog) { print0(I_LEVEL_INFO, strLog); } public void debug(String strLog) { print0(I_LEVEL_DEBUG, strLog); } public void trace(String strLog) { print0(I_LEVEL_TRACE, strLog); } private void print0(int iLevel, String strLog) { print0(iLevel, getStrClassName(), strLog); } private static void print0(int iLevel, String strClassName, String strLog) { PrintWriter pw = null; try { if (strClassName == null) { return; } final String STR_FILE_NAME = getLogFileName(); pw = new PrintWriter(new FileWriter(STR_FILE_NAME, true)); print0(pw, iLevel, strClassName, strLog); } catch (IOException ioe) { } finally { if (pw != null) pw.close(); } } /** * 日付・時間と情報をログへ出力する。 * @param pw ログの出力先 * @param iLevel ログレベル * @param strClassName クラス名 * @param strLog ログへ出力する情報 */ private static void print0(PrintWriter pw, int iLevel, String strClassName, String strLog) { StringBuffer sb = new StringBuffer(); // ログレベルのチェック if (checkLogLevel(iLevel) == false) { return; } // 現在時刻の追加 final Date D_CURRENT = Calendar.getInstance().getTime(); sb.append(new SimpleDateFormat("[yyyy.MM.dd HH:mm:ss:SSS zzz] ").format(D_CURRENT)); // レベルの追加 sb.append(STR_LEVEL_NAME[iLevel] + " "); // クラス名の追加（null の時は追加しない） if (strClassName != null) { sb.append("[" + strClassName + "] "); } // 情報の追加 sb.append(strLog); pw.println(sb); pw.flush(); } } 或者直接使用 考虑到性能问题，不打算引入额外的log4j.jar包。在struts的lib中有一个commons-logging-1.0.4.jar包，现在我来说一下它的运行机制。<br />在Struts中对日志功能的使用遵循以下的步骤：<br /><br />   1.<br />      如果你自己导入了log4j.jar包并在WEB-INF/classes目录下添加log4j.properties，即可启用log4j。（注意：不需要加入commons-logging.properties文件；还有如果项目中有spring加入spring会自动加入log4j.jar包）<br />   2.<br />      如果存在JDK1.4, 使用JDK1.4<br />   3.<br />      如果两者都不存在，就使用SimpleLog。<br /><br />现在我重点来说我们这个BSPF项目中用到的比较高性能的SimpleLog类的具体配置。<br />其实很简单，只要在你的WEB-INF/classes目录中加入两个properties配置文件就OK了。<br />###这个是commons-logging.properties文件<br />###指定你要用的日志类<br />org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog###这个是simplelog.properties文件<br />###首先指定你的输出级别：必须为"trace", "debug", "info", "warn", "error", or "fatal"<br />###从trace到fatal级别越来越高，低级包括高级别的日志输出，默认为info<br />org.apache.commons.logging.simplelog.defaultlog=fatal<br /><br />###输出的日志消息中是否包含当前日志器实例的简写名字，默认true<br />org.apache.commons.logging.simplelog.showShortLogname<br /><br />###输出的日志消息中是否应包含当前时间信息，默认false<br />org.apache.commons.logging.simplelog.showdatetime<br /><br />###最后注意一点SimpleLog类把日志输出到System.err中，无需你自己配置<br />###虽然现在不能到文件中，但以后可以改源码或换成log4j还是比较方便，不用改程序的源码最后再给大家一个example<br /><br />package org.chinacreator.test;<br />//必须引入的两个类<br />import org.apache.commons.logging.LogFactory;<br />import org.apache.commons.logging.Log; public class LoggingTest {<br />//SimpleLog会为每个类单独输出一个日志<br />private static Log log = LogFactory.getLog(LoggingTest.class);<br />public static void main(String[] args) {<br />/**<br />*<br />大家注意，我没有直接去执行log.trace之类的操作，而是先作了一个判断，这是有道理的。<br />*<br />其实无非就是一个性能的问题<br />*<br />大家想想，如果我在simplelog.properties文件中org.apache.commons.logging.simplelog.defaultlog=fatal，也就是<br />*<br />指定了最高级别，那就没有fatal错误以下的日志输出到System.err了，那我还在调用log.trace方法不是一种多余<br />*<br />特别是在里面还有一个String<br />msg<br />=<br />"你想出现的信息"，然后再log.trace(msg)这不是对内存开销更大。<br />*<br /><br />*/<br />if (log.isTraceEnabled()) {<br />log.trace("Test logging trace level");<br />}<br />if (log.isDebugEnabled()) {<br />log.debug("Test logging debug level");<br />}<br />if (log.isInfoEnabled()) {<br />log.info("Test logging info level");<br />}<br />if (log.isWarnEnabled()) {<br />log.warn("Test logging warn level");<br />}<br />if (log.isErrorEnabled()) {<br />log.error("Test logging error level");<br />}<br />if (log.isFatalEnabled()) {<br />log.fatal("Test logging fatal level");<br />}<br />}<br />}<br /><br /><br />Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=2095938
          <br/><br/>
          <span style="color:red;">
            <a href="http://gloryme.javaeye.com/blog/176562#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 26 Mar 2008 22:50:17 +0800</pubDate>
        <link>http://gloryme.javaeye.com/blog/176562</link>
        <guid>http://gloryme.javaeye.com/blog/176562</guid>
      </item>
      <item>
        <title>Linux Fedora 8中yum设置的点点滴滴(转）</title>
        <author>gloryme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gloryme.javaeye.com">gloryme</a>&nbsp;
          链接：<a href="http://gloryme.javaeye.com/blog/172976" style="color:red;">http://gloryme.javaeye.com/blog/172976</a>&nbsp;
          发表时间: 2008年03月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          现在设置源吧，首先你要google一下livna的源，把 它加进去 。如下：<br /><br />su<br />Password:<br /># rpm -ivh http://rpm.livna.org/livna-release-8.rpm<br /><br />安装fastestmirror插件。<br /><br />yum install yum-fastestmirror<br /><br />好了，该到设置yum了：<br /><br />gedit /etc/yum/yum-updatesd.conf<br /><br />其配置如下：<br /><br />[main]<br /># how often to check for new updates (in seconds)<br />run_interval = 604800<br /><br />#多久检查更新，我设置成了7天<br /><br /># how often to allow checking on request (in seconds)<br />updaterefresh = 600<br />#更新刷新周期，这个是为了避免服务器负担太重，建议保持默认，或者设置大点。<br /><br /># how to send notifications (valid: dbus, email, syslog)<br />emit_via = dbus<br /># should we listen via dbus to give out update information/check for<br /># new updates<br />dbus_listener = yes<br />#以下三项为：是否自动安装更新，是否自动下载更新，是否自动下载依赖，建议全部设置成no，否则系统会在后台自动更新，导致前台的所有安装和更新程序被锁死。<br /><br /># automatically install updates<br />do_update = no<br /># automatically download updates<br />do_download = no<br /># automatically download deps of updates<br />do_download_deps = no<br /><br />设置fastestmirror<br /><br />默认的fastestmirror并不是每次都能找到最快的源。<br /><br />要进行一点算是优化的设置：<br /><br />gedit /etc/yum/pluginconf.d/fastestmirror.conf<br /><br />配置如下：<br /><br />[main]<br />enabled=1<br />verbose=0<br />socket_timeout=1<br />hostfilepath=/var/cache/yum/timedhosts.txt<br />maxhostfileage=1<br /><br />#设置成1，即每一天刷新一次镜像的速度<br /><br />maxthreads=15<br />#exclude=.gov, facebook<br /><br />做了如上设置后也许你还是连不上最快的镜像，这时就要RP和刷新了<br /><br />yum clean all<br /><br />这样可以清除镜像的记录，让yum重新刷新
          <br/><br/>
          <span style="color:red;">
            <a href="http://gloryme.javaeye.com/blog/172976#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 17 Mar 2008 14:14:46 +0800</pubDate>
        <link>http://gloryme.javaeye.com/blog/172976</link>
        <guid>http://gloryme.javaeye.com/blog/172976</guid>
      </item>
      <item>
        <title>性能测试的几个主要术语(转）</title>
        <author>gloryme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gloryme.javaeye.com">gloryme</a>&nbsp;
          链接：<a href="http://gloryme.javaeye.com/blog/171440" style="color:red;">http://gloryme.javaeye.com/blog/171440</a>&nbsp;
          发表时间: 2008年03月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          响应时间（response time）<br /><br />响应时间，是指系统对用户操作的反馈时间。我们可以举一个163邮箱登录的例子：<br />我们如何来测试邮箱的登录响应时间呢？我们首先进入mail.163.com网页，输入合法的用户名和密码，点击“登录”，直到登录后的邮箱界面完全显示出来为止。那么响应时间从什么时候开始计算呢？是我们输入用户名的时候，还是点击“登录”的时候？<br />显然，我们应该从按下“登录”按钮的那一瞬间开始计时，到登录后页面完全显示出来为止，这才是真正的用户登录时间，而不包括用户输入用户名和密码的时间以及思考停顿的时间（think time）<br /><br />登录响应时间其实包括3个部分：网络传输时间，服务器处理时间，浏览器显示时间<br />即登录响应时间=网络传输时间*2+服务器处理时间+客户端显示时间<br />网络传输是双向的，所以要乘以2。网络传输时间又可以包括接入网的传输时间和互联网中的传输时间，它的大小和你所使用的上网方式有关，比如光纤一般要比adsl要快。<br />服务器包括web服务器和数据库服务器，服务器处理时间是我们测试的重点，也是我们能够控制的部分，因为最终用户用什么机器上网，什么接入方式上网我们是控制不了的。我们要重点测试服务器的处理速度如何，以及能否承受较大的压力，我们可以用工具（比如LoadRunner）来模拟大量用户同时登录访问服务器，来查看服务器的承载能力。<br />客户端显示时间，如何将服务器传过来的页面尽快地显示到浏览器上，是开发人员需要考虑的问题，这里面涉及到算法优化的问题，这也是开发人员容易忽略的地方。<br />由此可见，响应时间是可以分解成若干个时间段的，任何一个环节出问题都会影响到最终的响应时间，这就需要我们在实际工作中结合具体情况加以分析。<br />最后再说明一点，响应时间的快慢是一个相对的概念，没有绝对的标准，比如对于163邮箱登录来说，用户可以接受的时间可以在10秒以内，而对于一个实时的军工软件来说，相应时间要精确到毫米级别甚至更低。<br />对于普通的web网站来说，一个普遍被接受的响应时间标准是2/5/10，即用户对2秒钟以内的的响应时间非常满意，对于5秒钟以内的响应时间基本满意，对于10秒钟以上的响应时间则无法接受，如图2-3<br /><br />吞吐量（throughput）<br /><br />吞吐量，是指单位时间内流经被测系统的数据流量，一般单位为b/s,即每秒钟流经的字节数。<br />吞吐量是大型门户网站以及各种电子商务网站衡量自身负载能力的一个很重要的指标，一般吞吐量越大，系统单位时间内处理的数据越多，系统的负载能力也越强。<br />吞吐量和很多因素有关，比如服务器的硬件配置，网络的拓扑结构，软件的技术架构等。实际工作中，我们往往对升级客户的硬件配置无能为力，大多数情况下，我们还是在软件的技术架构上做文章：<br />比如后台数据库装oracle还是装sql server,显然前者的处理能力更强；<br />web服务器是用weblogic还是iis，要看服务器端的语言是jsp还是asp…<br />测试的时候多跟项目经理，系统架构师以及用户沟通，来获取系统架构的第一手材料。<br /><br />并发（concurrency）<br /><br />并发，是指多个同时发生的操作。比如有10个用户同时点击“登录”按钮（注意是同时），来登录163邮箱，我们就说此次登录163邮箱的并发数为10。<br />需要注意的是，并发和并行不是一个概念，并发是同时发生，并行是同步运行。10个用户并发登录163邮箱，只是在点击“登录”按钮那一瞬间是并行的，而登录后各个用户的操作则不同步。<br /><br />稳定性测试<br /><br />稳定性测试，也叫可靠性测试（reliability testing），是指连续运行被测系统，检查系统运行时的稳定程度。<br />我们通常用mtbf（mean time between failure,即错误发生的平均时间间隔）来衡量系统的稳定性，mtbf越大，系统的稳定性越强<br />稳定性测试的方法也很简单，即采用24*7（24小时*7天）的方式让系统不间断运行，至于具体运行多少天，是一周还是一个月，视项目的实际情况而定。<br /><br /><br />负载测试（load testing）<br /><br />负载测试，是性能测试的一种，通常是指让被测系统在其能忍受的压力的极限范围之内连续运行，来测试系统的稳定性。<br />可以看出负载测试和稳定性测试比较相似，都是让被测系统连续运行，区别就在于负载测试需要给被测系统施加其刚好能承受的压力，比如我们还是测试163邮箱系统的登录模块，我们先用1个用户登录，再用两个用户并发登录，再用5个，10个…在这个过程中，我们每次都需要观察并记录服务器的资源消耗情况（可以通过任务管理器中的性能监视器或者控制面板中的性能监视器），当发现服务器的资源消耗快要达到临界值时（比如cpu的利用率90%以上，内存的占有率达到80%以上），停止增加用户，假如现在的并发用户数为20，我们就用这20个用户同时多次重复登录，直到系统出现故障为止。<br />负载测试为我们测试系统在临界状态下运行是否稳定提供了一种办法。<br /><br /><br />压力测试（stress testing）<br /><br />压力测试，是性能测试的一种，通常是指持续不断的给被测系统增加压力，直到将被测系统压垮为止，用来测试系统所能承受的最大压力。<br />比如我们不断增加并发的登录用户数，20，30，50…比如，当增加到70个用户并发登录时，系统崩溃了，我们就可以知道163邮箱所能承载的最大登录并发数为70个左右。<br /><br />我们把上面的思路整理一下，编写一下163邮箱登录模块性能测试用例，供大家参考（假设163邮箱要求登录的时间最多不超过10秒，测试环境略）<br /><br />关于性能测试的分类，可以举一个比较通俗的例子方便大家理解：<br />假设一个人很轻松就能背1袋米，背2袋米很吃力，最多就能背3袋米<br />稳定性测试--我让他背1袋米，但是让他去操场上跑圈，看多久累倒。<br />负载测试--我让他背2袋米去操场上跑圈，看多久累倒。<br />压力测试--我让他背2袋米，3袋米，4袋米…发现他最多就能背3袋。
          <br/><br/>
          <span style="color:red;">
            <a href="http://gloryme.javaeye.com/blog/171440#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 14 Mar 2008 16:06:01 +0800</pubDate>
        <link>http://gloryme.javaeye.com/blog/171440</link>
        <guid>http://gloryme.javaeye.com/blog/171440</guid>
      </item>
      <item>
        <title>J2EE For Weblogic开发中Weblogic.xml文件的配置 </title>
        <author>gloryme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gloryme.javaeye.com">gloryme</a>&nbsp;
          链接：<a href="http://gloryme.javaeye.com/blog/166786" style="color:red;">http://gloryme.javaeye.com/blog/166786</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          weblogic Server允许通过设置weblogic应用程序扩展描述符（weblogic.xml）配置jsp容器，<br />该文件通常位于web应用程序的web-inf目录下。一般不通过修改weblogic文件直接配置，<br />而是通过控制台配置该文件，在Deploments-->web Application-->defaultWebApp中配置。<br />可在开发和生产环境中配置不同的信息。<br />主要配置信息：<br />compilerSupportsEncoding //true－－支持使用字符集<br />encoding //指定jsp文件的默认字符集，如gb2312；<br />vervose //是否将调试信息输出到浏览器和日志；<br />keepgenerated //是否让编译jsp文件产生的.java文件持续存在；<br />Page Check Seconds //正数－－在以秒为单位的时间间隔检查jsp文件是否发生了修改，如果是则重新编译；<br />           0－－在每一个请求检查jsp;<br />           -1－－不对jsp文件进行检查。<br />Precompile //true－－在weblogic服务器启动时自动编译所有的jsp。<br />Debug Enable //true－－是否允许调试。<br /><br />Weblogic .xml<br /><br /><br /> &lt;? xml version="1.0" encoding="GB2312" ?> <br /> &lt;! DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd" > <br /> &lt; weblogic-web-app > <br />     &lt;!-- <br />        为web.xml所定义角色赋值<br />        如果是Weblogic 8.1 SP2 或者之前的版本，可以不定义security-role-assignment<br />        如果是SP3，必须手工添加所有principal（角色或角色组）；<br />        详细介绍请参考 PAFA3开发设计指南 文档 。<br />      --> <br />     &lt; security-role-assignment > <br />         &lt;!--  role-name 必须跟web.xml中security-role标记下的role-name取值相同  --> <br />         &lt; role-name > pafaDemoUser &lt;/ role-name > <br />         &lt;!--  principal-name 必须是UM中定义的角色或者角色组，不能是用户  --> <br />         &lt; principal-name > r_usermanager_rm_user &lt;/ principal-name > <br />         &lt; principal-name > p_g_rmtest03_myopr &lt;/ principal-name >     <br />         &lt; principal-name > Administrators &lt;/ principal-name >     <br />     &lt;/ security-role-assignment > <br /> <br />     &lt; jsp-descriptor > <br />         &lt; jsp-param > <br />             &lt; param-name > pageCheckSeconds &lt;/ param-name > <br />             &lt; param-value > 1 &lt;/ param-value > <br />         &lt;/ jsp-param > <br />         &lt; jsp-param > <br />             &lt; param-name > compilerSupportsEncoding &lt;/ param-name > <br />             &lt; param-value > true &lt;/ param-value > <br />         &lt;/ jsp-param > <br />         &lt; jsp-param > <br />             &lt; param-name > encoding &lt;/ param-name > <br />             &lt; param-value > GB2312 &lt;/ param-value > <br />         &lt;/ jsp-param > <br />         &lt; jsp-param > <br />             &lt; param-name > verbose &lt;/ param-name > <br />             &lt; param-value > true &lt;/ param-value > <br />         &lt;/ jsp-param > <br />         &lt; jsp-param > <br />             &lt; param-name > printNulls &lt;/ param-name > <br />             &lt; param-value > false &lt;/ param-value > <br />         &lt;/ jsp-param > <br />         &lt; jsp-param > <br />             &lt; param-name > keepgenerated &lt;/ param-name > <br />             &lt; param-value > true &lt;/ param-value > <br />         &lt;/ jsp-param > <br />     &lt;/ jsp-descriptor > <br /> &lt;/ weblogic-web-app >
          <br/><br/>
          <span style="color:red;">
            <a href="http://gloryme.javaeye.com/blog/166786#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 00:07:02 +0800</pubDate>
        <link>http://gloryme.javaeye.com/blog/166786</link>
        <guid>http://gloryme.javaeye.com/blog/166786</guid>
      </item>
      <item>
        <title>meat标签的奥妙(转)</title>
        <author>gloryme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gloryme.javaeye.com">gloryme</a>&nbsp;
          链接：<a href="http://gloryme.javaeye.com/blog/166775" style="color:red;">http://gloryme.javaeye.com/blog/166775</a>&nbsp;
          发表时间: 2008年03月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          meat标签的奥妙 <br />　　META标签，是HTML语言head区的一个辅助性标签。在几乎所有的page里，我们都可以看 <br />到类似下面这段html代码： <br /><br />----------------------------------------------- <br />&lt;head> <br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <br />&lt;/head> <br />----------------------------------------------- <br /><br />这就是meta标签的典型运用。meta标签有多少参数，有什么作用，为什么我们要特别重 <br />视它呢？让我们一起来发掘meta标签的奥妙! <br /><br />根据HTML语言标准注释：meta标签是对网站发展非常重要的标签，它可以用于鉴别作者， <br />设定页面格式，标注内容提要和关键字，以及刷新页面等等。 <br /><br />meta标签分两大部分：HTTP-EQUIV和NAME变量。 <br /><br />●HTTP-EQUIV类似于HTTP的头部协议，它回应给浏览器一些有用的信息，以帮助正确和精确 <br />地显示网页内容。常用的HTTP-EQUIV类型有： <br /><br />1.expires(期限) <br />说明：可以用于设定网页的到期时间。一旦网页过期，必须到服务器上重新调阅。 <br />用法：&lt;META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> <br />注意：必须使用GMT的时间格式。 <br /><br />2.Pragma(cach模式) <br />说明：禁止浏览器从本地机的缓存中调阅页面内容。 <br />用法：&lt;META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <br />注意：这样设定，访问者将无法脱机浏览。 <br /><br />3.Refresh(刷新) <br />说明：需要定时让网页自动链接到其它网页的话，就用这句了。 <br />用法：&lt;META HTTP-EQUIV="Refresh" CONTENT="5;URL=http://www.yahoo.com"> <br />注意：其中的5是指停留5秒钟后自动刷新到URL网址。 <br /><br />4.Set-Cookie(cookie设定) <br />说明：如果网页过期，那么存盘的cookie将被删除。 <br />用法：&lt;META HTTP-EQUIV="Set-Cookie" CONTENT="cookievalue=xxx; <br />expires=Wednesday, 21-Oct-98 16:14:21 GMT; path=/"> <br />注意：必须使用GMT的时间格式。 <br /><br />5.Window-target(显示窗口的设定) <br />说明：强制页面在当前窗口以独立页面显示。 <br />用法：&lt;META HTTP-EQUIV="Window-target" CONTENT="_top"> <br />注意：用来防止别人在框架里调用你的页面。 <br /><br />5.Content-Type(显示字符集的设定) <br />说明：设定页面使用的字符集。(我们在前面字体设计中已经介绍过它的作用) <br />用法：&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <br /><br /><br />●meat标签的NAME变量语法格式是： <br />&lt;META NAME="xxx" CONTENT="xxxxxxxxxxxxxxxxxx"> <br />其中xxx主要有下面几种参数： <br /><br />1.Keywords(关键字) <br />说明：keywords用来告诉搜索引擎你网页的关键字是什么。 <br />举例：&lt;META NAME ="keywords" CONTENT="life, universe, mankind, plants, <br />relationships, the meaning of life, science"> <br /><br />2.description(简介) <br />说明：description用来告诉搜索引擎你的网站主要内容。 <br />举例：&lt;META NAME="description" CONTENT="This page is about the meaning of <br />life, the universe, mankind and plants."> <br /><br />3.robots(机器人向导) <br />说明：robots用来告诉搜索机器人哪些页面需要索引，哪些页面不需要索引。 <br />CONTENT的参数有all,none,index,noindex,follow,nofollow。默认是all。 <br />举例：&lt;META NAME="robots" CONTENT="none"> <br /><br />4.author(作者) <br />说明：标注网页的作者 <br />举例：&lt;META name="AUTHOR" content="ajie,ajie@netease.com"> <br /><br />以上是meta标签的一些基本用法，其中最重要的就是:Keywords和description的设定。 <br /><br />为什么呢？道理很简单，这两个语句可以让搜索引擎能准确的发现你，吸引更多的人访问 <br />你的站点! <br /><br />根据现在流行搜索引擎(Lycos，AltaVista等)的工作原理,搜索引擎首先派出机器人自动 <br />在www上搜索，当发现新的网站时，便检索页面中的keywords和decription，并将其加入到自 <br />己的数据库，然后再根据关键词的密度将网站排序。 <br /><br />也就是说： <br />1. 如果你的页面中根本没有Keywords和description的meta标签，那么机器人是 <br />无法将你的站点加入数据库，网友也就不可能搜索到你的站点。 <br /><br />2. 如果你的关键字选的不好，关键字的密度不高，被排列在几十甚至几百万个站点的后面 <br />被点击的可能性也是非常小的。 <br /><br />所以,我们必须记住添加keywords和description的meta标签，并尽可能写好关键字和简介。 <br /><br />写keywords的禁忌是： <br />1.不要用常见词汇。例如www,homepage,net,web等。 <br />2.不要用形容词，副词。例如最好的，最大的等。 <br />3.不要用笼统的词汇，要尽量精确。例如不用"摩托罗拉手机",改用"V998"等 <br /><br />寻找合适的关键词的一个技巧是：到lycos,Alta,infoseek等搜索引擎，搜索与你内容相仿 <br />的网站，查看排名前十位的网站的meta关键字，copy下来用到自己的站点上。 <br /><br />这里，我们举一段微软多媒体网站的关键字供你参考： <br />&lt;meta name="keywords" content="joke, music, MP3, media, audio, <br />joke of the day, downloads, free music, horoscope, radio, video, <br />music downloads, movies, radio station, media player, free, <br />download, weather, horoscopes, windows media technologies, <br />online, radio station guide, free download"> <br /><br />小资源:人们最常用的一些搜索词(即关键词)可以到 <br />http://www.searchterms.com/ <br />http://eyescream.com/yahootop200.html <br />两个网址一看，那里有每个月网上最流行搜索词的排行榜. <br /><br />另外为了提高搜索点击率，这里还有一些"邪门歪道"： <br />1.为了增加关键词的密度，将关键字隐藏在页面里(将文字颜色定义成与背景颜色一样)。 <br />2.在图象的alt注释语句中加入关键字。 <br />如：&lt;IMG SRC="xxx.gif" Alt="keywords"> <br />3.利用HTML的注释语句，在页面代码里加入大量关键字。 <br />用法： &lt;!--- 这里插入关键字 --->
          <br/><br/>
          <span style="color:red;">
            <a href="http://gloryme.javaeye.com/blog/166775#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 02 Mar 2008 23:48:06 +0800</pubDate>
        <link>http://gloryme.javaeye.com/blog/166775</link>
        <guid>http://gloryme.javaeye.com/blog/166775</guid>
      </item>
      <item>
        <title>OSCache使用指南(转)</title>
        <author>gloryme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gloryme.javaeye.com">gloryme</a>&nbsp;
          链接：<a href="http://gloryme.javaeye.com/blog/166774" style="color:red;">http://gloryme.javaeye.com/blog/166774</a>&nbsp;
          发表时间: 2008年03月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          OSCache是当前运用最广的缓存方案，JBoss,Hibernate,Spring等都对其有支持， <br />下面简单介绍一下OSCache的配置和使用过程。 <br /><br />1.安装过程 <br />从http://www.opensymphony.com/oscache/download.action下载合适的OSCache版本， <br />我下载的是oscache-2.0.2-full版本。 <br />解压缩下载的文件到指定目录 <br /><br />从解压缩目录取得oscache.jar 文件放到 /WEB-INF/lib 或相应类库目录 目录中， <br />jar文件名可能含有版本号和该版本的发布日期信息等，如oscache-2.0.2-22Jan04.jar <br /><br />如果你的jdk版本为1.3.x,建议在lib中加入Apache Common Lib 的commons-collections.jar包。 <br />如jdk是1.4以上则不必 <br /><br />从src或etc目录取得oscache.properties 文件，放入src根目录或发布环境的/WEB-INF/classes 目录 <br />如你需要建立磁盘缓存，须修改oscache.properties 中的cache.path信息 (去掉前面的#注释)。 <br />win类路径类似为c:\\app\\cache <br />unix类路径类似为/opt/myapp/cache <br /><br />拷贝OSCache标签库文件oscache.tld到/WEB-INF/classes目录。 <br /><br />现在你的应用目录类似如下： <br />$WEB_APPLICATION\WEB-INF\lib\oscache.jar <br />$WEB_APPLICATION\WEB-INF\classes\oscache.properties <br />$WEB_APPLICATION\WEB-INF\classes\oscache.tld <br /><br /><br />将下列代码加入web.xml文件中 <br />&lt;taglib> <br />&lt;taglib-uri>oscache&lt;/taglib-uri> <br />&lt;taglib-location>/WEB-INF/classes/oscache.tld&lt;/taglib-location> <br />&lt;/taglib> <br /><br />为了便于调试日志输出，须加入commons-logging.jar和log4j-1.2.8.jar到当前类库路径中 <br /><br />在src目录加入下面两个日志输出配置文件： <br />log4j.properties 文件内容为： <br />log4j.rootLogger=DEBUG,stdout,file <br /><br />log4j.appender.stdout=org.apache.log4j.ConsoleAppender <br />log4j.appender.stdout.layout=org.apache.log4j.PatternLayout <br />log4j.appender.stdout.layout.ConversionPattern=[start]%d{yyyy/MM/dd/ HH:mm:ss}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n <br /><br /><br /><br />log4j.appender.file=org.apache.log4j.RollingFileAppender <br />log4j.appender.file.File=oscache.log <br />log4j.appender.file.MaxFileSize=100KB <br />log4j.appender.file.MaxBackupIndex=5 <br />log4j.appender.file.layout=org.apache.log4j.PatternLayout <br />log4j.appender.file.layout.ConversionPattern=[start]%d{yyyy/MM/dd/ HH:mm:ss}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n <br /><br /><br />log4j.logger.org.apache.commons=ERROR <br />log4j.logger.com.opensymphony.oscache.base=INFO <br /><br /><br />commons-logging.properties 文件内容为 <br /><br />org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JCategoryLog <br /><br />2.oscache.properties 文件配置向导 <br /><br />cache.memory <br />值为true 或 false ，默认为在内存中作缓存， <br />如设置为false，那cache只能缓存到数据库或硬盘中，那cache还有什么意义：） <br /><br />cache.capacity <br />缓存元素个数 <br /><br />cache.persistence.class <br />持久化缓存类，如此类打开，则必须设置cache.path信息 <br /><br />cache.cluster 相关 <br />为集群设置信息。 <br />如 <br />cache.cluster.multicast.ip为广播IP地址 <br />cache.cluster.properties为集群属性 <br /><br /><br />3.OSCache的基本用法 <br /><br />cache1.jsp 内容如下 <br /><br />&lt;%@ page import="java.util.*" %> <br />&lt;%@ taglib uri="oscache" prefix="cache" %> <br /><br />&lt;html> <br />&lt;body> <br /><br />没有缓存的日期: &lt;%= new Date() %>&lt;p> <br />&lt;!--自动刷新--> <br />&lt;cache:cache time="30"> <br />每30秒刷新缓存一次的日期: &lt;%= new Date() %> <br />&lt;/cache:cache> <br />&lt;!--手动刷新--> <br />&lt;cache:cache key="testcache"> <br />手动刷新缓存的日期: &lt;%= new Date() %> &lt;p> <br />&lt;/cache:cache> <br />&lt;a href="cache2.jsp">手动刷新&lt;/a> <br /><br />&lt;/body> <br />&lt;/html> <br /><br />cache2.jsp 执行手动刷新页面如下 <br />&lt;%@ taglib uri="oscache" prefix="cache" %> <br /><br />&lt;html> <br />&lt;body> <br /><br />缓存已刷新...&lt;p> <br /><br />&lt;cache:flush key="testcache" scope="application"/> <br /><br />&lt;a href="cache1.jsp">返回&lt;/a> <br /><br />&lt;/body> <br />&lt;/html> <br /><br /><br />你也可以通过下面语句定义Cache的有效范围,如不定义scope,scope默认为Applcation <br />&lt;cache:cache time="30" scope="session"> <br />... <br />&lt;/cache:cache> <br /><br />4. 缓存过滤器 CacheFilter <br /><br />你可以在web.xml中定义缓存过滤器，定义特定资源的缓存。 <br />&lt;filter> <br />&lt;filter-name>CacheFilter&lt;/filter-name> <br />&lt;filter-class>com.opensymphony.oscache.web.filter.CacheFilter&lt;/filter-class> <br />&lt;init-param> <br />&lt;param-name>time&lt;/param-name> <br />&lt;param-value>60&lt;/param-value> <br />&lt;/init-param> <br />&lt;init-param> <br />&lt;param-name>scope&lt;/param-name> <br />&lt;param-value>session&lt;/param-value> <br />&lt;/init-param> <br />&lt;/filter> <br />&lt;filter-mapping> <br />&lt;filter-name>CacheFilter&lt;/filter-name> <br />&lt;url-pattern>*.jsp&lt;/url-pattern> <br />&lt;/filter-mapping> <br />上面定义将缓存所有.jsp页面，缓存刷新时间为60秒，缓存作用域为Session <br /><br />注意，CacheFilter只捕获Http头为200的页面请求，即只对无错误请求作缓存， <br />而不对其他请求（如500,404,400）作缓存处理 <br /><br />相关文章: <br />应用OSCache提升J2EE系统运行性能 <br />http://gceclub.sun.com.cn/yuanchuang/week-15/oscache.html
          <br/><br/>
          <span style="color:red;">
            <a href="http://gloryme.javaeye.com/blog/166774#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 02 Mar 2008 23:46:57 +0800</pubDate>
        <link>http://gloryme.javaeye.com/blog/166774</link>
        <guid>http://gloryme.javaeye.com/blog/166774</guid>
      </item>
      <item>
        <title>web.xml文件中配置mime下载文件类型(转)</title>
        <author>gloryme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gloryme.javaeye.com">gloryme</a>&nbsp;
          链接：<a href="http://gloryme.javaeye.com/blog/166772" style="color:red;">http://gloryme.javaeye.com/blog/166772</a>&nbsp;
          发表时间: 2008年03月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          TOMCAT在默认情况下下载.rar的文件是把文件当作text打开,以至于IE打开RAR文件为乱码,如果遇到这种情况时不必认为是浏览器的问题,大多数浏览器应该不会死皮赖脸地把二进制文件当作文本打开,一般都是服务器给什么浏览器就开什么.解决方法: <br /><br />打开conf/web.xml,加入下面的代码. <br /><br />&lt;mime-mapping> <br />&lt;extension>doc&lt;/extension> <br />&lt;mime-type>application/msword&lt;/mime-type> <br />&lt;/mime-mapping> <br />&lt;mime-mapping> <br />&lt;extension>xls&lt;/extension> <br />&lt;mime-type>application/msexcel&lt;/mime-type> <br />&lt;/mime-mapping> <br />&lt;mime-mapping> <br />&lt;extension>pdf&lt;/extension> <br />&lt;mime-type>application/pdf&lt;/mime-type> <br />&lt;/mime-mapping> <br />&lt;mime-mapping> <br />&lt;extension>zip&lt;/extension> <br />&lt;mime-type>application/zip&lt;/mime-type> <br />&lt;/mime-mapping> <br />&lt;mime-mapping> <br />&lt;extension>rar&lt;/extension> <br />&lt;mime-type>application/rar&lt;/mime-type> <br />&lt;/mime-mapping> <br />&lt;mime-mapping> <br />&lt;extension>txt&lt;/extension> <br />&lt;mime-type>application/txt&lt;/mime-type> <br />&lt;/mime-mapping> <br />&lt;mime-mapping> <br />&lt;extension>chm&lt;/extension> <br />&lt;mime-type>application/mshelp&lt;/mime-type> <br />&lt;/mime-mapping> <br /><br />重启TOMCAT,清除IE缓存,再打开RAR的文件时就可以正常下载了. <br />Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1527483 <br /><br /><br />1.指定了自己的javaEncoding <br />(参考 http://gceclub.sun.com.cn/staticcontent/html/sunone/app7/app7-dg-webapp/ch6/ch6-4.html &lt;servlet> <br />&lt;servlet-name>jsp&lt;/servlet-name> <br />&lt;servlet-class>org.apache.jasper.servlet.JspServlet&lt;/servlet-class> <br />&lt;init-param> <br />&lt;param-name>fork&lt;/param-name> <br />&lt;param-value>false&lt;/param-value> <br />&lt;/init-param> <br />&lt;init-param> <br />&lt;param-name>javaEncoding&lt;/param-name> <br />&lt;param-value>GB18030&lt;/param-value> <br />&lt;/init-param> <br />&lt;init-param> <br />&lt;param-name>xpoweredBy&lt;/param-name> <br />&lt;param-value>true&lt;/param-value> <br />&lt;/init-param> <br />&lt;load-on-startup>3&lt;/load-on-startup> <br />&lt;/servlet> <br /><br />2.添加rar,iso等的mime-type映射 <br />避免在浏览器里直接打开。 <br /><br /><br />&lt;mime-mapping> <br />&lt;extension>mht&lt;/extension> <br />&lt;mime-type>text/x-mht&lt;/mime-type> <br />&lt;/mime-mapping> <br />&lt;mime-mapping> <br />&lt;extension>rar&lt;/extension> <br />&lt;mime-type>application/octet-stream&lt;/mime-type> <br />&lt;/mime-mapping> <br />&lt;mime-mapping> <br />&lt;extension>iso&lt;/extension> <br />&lt;mime-type>application/octet-stream&lt;/mime-type> <br />&lt;/mime-mapping> <br />&lt;mime-mapping> <br />&lt;extension>ape&lt;/extension> <br />&lt;mime-type>application/octet-stream&lt;/mime-type> <br />&lt;/mime-mapping> <br />&lt;mime-mapping> <br />&lt;extension>rmvb&lt;/extension> <br />&lt;mime-type>application/octet-stream&lt;/mime-type> <br />&lt;/mime-mapping> <br />&lt;mime-mapping> <br />&lt;extension>ico&lt;/extension> <br />&lt;mime-type>image/x-icon&lt;/mime-type> <br />&lt;/mime-mapping> <br /><br />&lt;mime-mapping> <br />&lt;extension>doc&lt;/extension> <br />&lt;mime-type>application/msword&lt;/mime-type> <br />&lt;/mime-mapping> <br />&lt;mime-mapping> <br />&lt;extension>xls&lt;/extension> <br />&lt;mime-type>application/vnd.ms-excel&lt;/mime-type> <br />&lt;/mime-mapping> <br />&lt;mime-mapping> <br />&lt;extension>ppt&lt;/extension> <br />&lt;mime-type>application/vnd.ms-powerpoint&lt;/mime-type> <br />&lt;/mime-mapping> <br /><br />3.对html静态页面设置编码 <br /><br />&lt;!-- 修改下面两行以支持静态超文本的自动编码 <br />--> <br />&lt;mime-mapping> <br />&lt;extension>htm&lt;/extension> <br />&lt;mime-type>text/html;charset=gb2312&lt;/mime-type> <br />&lt;/mime-mapping> <br />&lt;mime-mapping> <br />&lt;extension>html&lt;/extension> <br />&lt;mime-type>text/html;charset=gb2312&lt;/mime-type> <br />&lt;/mime-mapping> <br />&lt;/web-app>
          <br/><br/>
          <span style="color:red;">
            <a href="http://gloryme.javaeye.com/blog/166772#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 02 Mar 2008 23:45:14 +0800</pubDate>
        <link>http://gloryme.javaeye.com/blog/166772</link>
        <guid>http://gloryme.javaeye.com/blog/166772</guid>
      </item>
      <item>
        <title>WebLogic Server 国际化 </title>
        <author>gloryme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gloryme.javaeye.com">gloryme</a>&nbsp;
          链接：<a href="http://gloryme.javaeye.com/blog/166582" style="color:red;">http://gloryme.javaeye.com/blog/166582</a>&nbsp;
          发表时间: 2008年03月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          国际化概述<br /><br />WebLogic Server 中 I18n 的主要特性：<br /><br />在 WebLogic Server 内部，所有字符都按 Unicode 进行处理。只要输入或输出字符数据，就执行代码转换。 必须分别为 WebLogic Server、J2EE 组件和 WebLogic Server 容器上的资源指定适当的编码转换。 如果不指定编码转换，系统将应用默认的编码转换。 存在各种类型的默认编码转换，其中的一些编码转换不符合操作系统的区域设置。 在使用 WebLogic Server 生成用于处理多字节字符数据的分布式系统之前，应该了解如何指定有关 Java 和 J2EE 的适当编码。而且，在控制编码转换时，应该适当考虑连接到 WebLogic Server 的系统（例如，操作系统、Internet、后端系统）的编码处理。<br /><br />下面简要描述了 WebLogic Server 中的编码处理。<br /><br />Unicode 的使用<br /><br />WebLogic Server 是一种 100% 纯 Java 应用服务器程序，它使用 Unicode 进行服务器内部编码。<br /><br />这样 WebLogic Server 就能同时处理所有语言的字符（只要 Unicode 能够处理这些字符）。<br /><br />编码转换<br /><br />当 WebLogic Server 与外部交换字符数据时，需要进行编码转换。<br /><br />Unicode 是 Java 的内部编码，而在普通的操作系统中，几乎没有任何环境使用 Unicode，它们使用的是为每个平台单独定义的称为“本地编码”的编码。例如，Windows 系统的本地编码是一个与语言有关的代码页，Unix 系统的本地编码是与用 LANG 环境变量指定的区域设置相对应的编码，数据库的本地编码是在创建数据库时指定的字符集或者由客户端指定的字符集。<br /><br />因此，在 WebLogic Server 中进行输入和输出时，需要进行本地编码与 Unicode 之间的编码转换。当 WebLogic Server 与操作系统或外部资源交换字符数据时，总会发生这种编码转换。<br /><br />注意：序列化的 Java 类流中包含的字符作为（UTF-8 编码的）Unicode 保存在该类的内部信息中。这意味着无需考虑序列化流的代码转换。例如，对于 EJB 或 RMI 无需考虑编码。<br /><br />因为编码转换是针对单个字符进行的，所以转换过程会占用大量 CPU 资源。在设计应用程序时，最好避免进行代码转换，以确保系统性能较高。<br /><br />WebLogic Server 服务器自身的编码转换与应用程序组件和资源的编码转换是相互独立的<br /><br />在 WebLogic Server 中，服务器本身的编码转换与 WebLogic Server 上应用程序组件和资源的编码转换是分开的。<br /><br />在 WebLogic Server 中，服务器日志或管理控制台的编码是由服务器的 Java VM 或浏览器的语言设置的默认编码确定的，而与应用程序组件的编码或 WebLogic Server 提供的内容所用的语言无关。<br /><br />而且，在配置 WebLogic Server 的行为时，可以不考虑 WebLogic Server 使用的区域设置或语言设置。<br /><br />还可以为在 WebLogic Server 容器上配置的资源单独设置编码转换。<br /><br />WebLogic Server 本身的编码转换包括： <br /><br />WebLogic Server 的系统日志输出 管理控制台的页面编码 WebLogic Server 和本地文件系统之间的文件 I/O 单个应用程序的编码转换包括：<br /><br />JSP 文件 Servlet DD 文件 XML Web Service WebLogic Server 上的资源包括：<br /><br />JDBC 连接 WTC 连接等 为 WebLogic Server 指定编码时，需要弄清楚要为哪些类别指定编码，然后需要查看是否可以创建有效的 Character 对象，以及 WebLogic Server 中的 Character 对象是否可以正确地转换为所需的编码。<br /><br />如上所述，您应该了解编码转换行为，以便进行正确的设置。如果不指定编码转换，应用程序将无法正确处理多字节字符。<br /><br />如果不指定编码，将使用适合情况的默认编码。默认编码可能因目标的规范或环境而异。<br /><br />默认编码示例<br /><br />影响 WebLogic Server 行为的默认编码包括：<br /><br />服务器 VM 的默认编码 J2EE 的默认编码 XML 的默认编码 HTTP 协议的默认编码 浏览器的默认编码 Web Service（例如，SOAP、WSDL、UDDI）的默认编码等 示例：<br /><br />在简体中文版的 Windows 中，服务器 VM 的默认编码通常是 MS936。 J2EE 的默认编码通常是 ISO-8859-1。 XML 的默认编码通常是 UTF-8。 HTTP 的默认编码通常是 US-ASCII。 因为不同的默认编码用于不同的目标（如上所述），所以，如果没有指定适当的编码，WebLogic Server 就无法正确地处理简体中文。为了能够控制编码转换，您应该先了解下列内容。<br /><br />在 Java 语言术语中，编码意味着“字符集”。描述字符集的词很多，但是每个词的定义略有不同。<br /><br />编码或字符集意味着一种定义，根据这种定义，将计算机可读代码分配给特定语言的字符集合，以便计算机可以处理这些字符。<br /><br />Java 语言在其 I/O 部分中包括了这些差异，以便可以在其内部以 Unicode 形式处理所有字符。这意味着对于任何字符集来说，只要它的编码定义存在，Java 就可以处理它。Java 基本上可以包括各种系统之间存在的任何编码差异。但是，目前还没有一个编码转换表可以处理目前全部现有编码之间的所有细微差异。同样，现有的编码表存在一些限制，这些限制源自与 Unicode 的一致性问题。<br /><br />在 Java Web 应用程序服务器中，Java 编码名称和 MIME 字符集（由 IANA 定义并在 Internet 和 XML 中使用）之间的差异尤其重要。WebLogic Server 使用一个映射表将 Java 编码名称与 IANA 字符集名称相关联，从而包括这种差异。使用该映射表，WebLogic Server 可以将 JSP 上定义为“Shift_JIS”的文件作为具有 Java 编码名称的“MS932”来处理。可以修改 WebLogic Server 的映射表，让其将“Shift_JIS”字符集作为“cp943”Java 编码来处理。<br /><br />Xerces 是 WebLogic Server 的内置 XML 解析器，它具有自己的 IANA-Java 映射表。用户不能对这种映射进行自定义。<br /><br />WebLogic Server 主要使用 Java 编码名称来指定编码。J2EE、Internet 或 XML 主要使用 IANA 字符集名称，您可以根据需要修改这种映射。<br /><br /> <br /><br />安装<br /><br />WebLogic Server 提供简体中文版安装程序和英语版安装程序。两者均可从 BEA Systems, Inc. 网站下载。<br /><br />简体中文版安装程序和英语版安装程序之间的区别在于：就影响 WebLogic Server 行为的程序文件而言，这两个安装程序是相同的，您可以将它们视为具有相同的软件。而且，从英语版安装程序启动的 WebLogic Server 实例和从简体中文版安装程序启动的另一个实例之间没有任何互操作性问题。<br /><br />共性：<br /><br />所有的 WebLogic Server 类文件（weblogic.jar 和其他文件） 版本字符串 消息目录和管理控制台联机帮助中的语言 区别：<br /><br />一些经过翻译的文本文件 about_wls/readme.txt/index.jsp 或 html WebLogic Builder 联机帮助 简体中文版的 WebLogic Server 8.1 不支持下列功能：<br /><br />智能更新 网络安装程序  <br /><br />WebLogic Server 系统管理<br /><br />下列项目使用 WebLogic Server 的 JVM 默认编码：<br /><br />WebLogic Server 的错误日志输出 与本地文件系统之间的文件输入和输出 下列项目使用浏览器的默认语言：<br /><br />管理控制台 要更改日志输出等的编码，使其使用服务器的默认编码，请执行下列过程：<br /><br />WebLogic Server 和 Java Virtual Machine 中的编码<br /><br />在 WebLogic Server 中，可以设置范围不同的编码。例如，JSP 有一个用来指定页面特定编码的 page 标记，该 page 标记符合 JSP 1.2 规范。在使用 WebLogic jDriver 时，还可以使用 weblogic.codeset 属性来为 JDBC 连接指定编码。请注意，为特定范围指定的编码与 WebLogic Server 所在的 Java VM 的默认编码没有任何关系。即便 Java VM 以英语区域设置运行，使用简体中文 JSP 文件提供服务也不会出现问题。但是，对下列字符串的处理取决于 Java VM 默认编码：<br /><br />WebLogic Server 的错误日志输出 与本地文件系统之间的文件输入和输出 这些字符串使用每个平台的 Java VM 默认编码（由 file.encoding Java 系统属性指定的编码）。例如，WebLogic Server 输出到终端控制台的日志消息的语言和编码取决于在 Java VM 中指定的编码。file.encoding java 系统属性基于平台环境和系统区域设置。如果希望切换 WebLogic Server 日志消息的语言和编码，则需要对系统区域设置进行相应切换。一旦 VM 启动，就不能动态切换 Java VM 默认编码。在重新启动 WebLogic Server 之前，请确保进行了下列设置。<br /><br />Windows 2000/Windows NT<br /><br />在“控制面板”的“区域选项”中选择“英语(美国)”或“简体中文”。这允许服务器使用 CP1252 或 MS936 作为默认编码。<br /><br />UNIX<br /><br />在 LANG 环境变量中指定您的平台支持的区域设置。<br /><br />下面列出了服务器编码和 LANG 环境变量的设置：<br /><br />表 2-1 服务器编码和 LANG 环境变量的设置 <br /><br />平台<br /> 编码<br /> LANG 环境变量<br /> <br />Solaris<br /> GB2312、GBK、GB18030<br /> zh_CN、zh_CN.GBK 或 zh_CN.GB18030<br /> <br />HP<br /> GB2312<br /> zh_CN.hp15CN<br /> <br /><br /><br />例如，如果为 Solaris 指定 GB2312，则 LANG 设置应如下所示：<br /><br />LANG=zh_CN如何检查服务器编码<br /><br />Java VM 默认编码变成 WebLogic Server 默认编码。可以通过参考管理控制台中的日志消息来检查编码。检查步骤如下：<br /><br />在管理控制台上，在左窗格中用鼠标右键单击服务器名，然后选择“查看服务器日志”。 单击“自定义此视图”。 在“子字符串”框中，输入“file.encoding”。 单击“应用”按钮。 <br />所显示的编码是服务器编码。<br />关于配置管理和受管服务器的说明<br /><br />在 WebLogic Server 中，对于一个域中的所有服务器必须使用相同的编码。<br /><br />如果某个服务器的编码不同于群集中存在的其他编码，则该服务器的日志将无法正确显示。<br /><br />例如，如果域中有一个 Windows 平台，则该域中所有的编码都应当是相同的 GB2312 类型的编码，如 MS936。如果某个服务器的编码不同于该域中存在的其他编码，则该服务器的日志将无法正确显示。<br /><br />关于配置群集的说明<br /><br />在 WebLogic Server 中，对于一个群集中的所有服务器必须使用相同的编码。<br /><br />在使用 WebLogic Server 时，应当用相同的编码配置该群集中的所有服务器。<br /><br />例如，如果群集中有一个 Windows 平台，则该群集中所有的编码都应当是相同的 GB2312 类型的编码，如 MS936。如果某个服务器的编码不同于存在的其他编码，则该服务器的日志将无法正确显示。<br /><br />config.xml 的编码<br /><br />config.xml 文件是 UTF-8 形式的输入/输出。在用文本编辑器直接编辑该文件时，请以 UTF-8 形式进行读取和保存。<br /><br />关于将 WebLogic Server 用作 Web 服务器的说明<br /><br />下面列出了关于将 WebLogic Server 用作 Web 服务器的说明：<br /><br />要将 contentType 字符集参数添加到 HTTP 头中以提供 HTML 文件，请在 web.xml 文件中插入下列定义，这些定义可以为 HTML 文件显式指定编码：<br /><br />&lt;mime-mapping>  &lt;extension>html&lt;/extension>  &lt;mime-type>text/html;charset=GB2312&lt;/mime-type>&lt;/mime-mapping>这允许您通过使用如下所示的 META 标记来忽略 HTML 文件中的字符集设置：<br /><br />&lt;META HTTP-EQUIV="content-type" CONTENT="text/html; charset=GB2312">JDBC 连接<br /><br />在创建 JDBC 连接池时，对于使用多字节字符的数据库，必须为到该数据库的连接指定适当的编码。您可能需要对 Web 层和 DB 层之间的编码转换映射进行匹配。<br /><br />有关详细信息，请参阅“Configuring and Using WebLogic jDriver for Oracle”中 Advanced Oracle Features 一章的“Codeset Support”。<br /><br />部署<br /><br />在 WebLogic Server 的 J2EE 组件的 DD 文件中，多字节字符的编码按照 XML 声明中指定的编码进行处理。如果 DD 文件中没有 XML 声明或者 XML 声明中没有编码特性，将以 UTF-8 编码处理该文件。<br /><br />在 WebLogic Builder 或管理控制台中编辑 DD 文件并保存所做的更改时，该文件的编码将与初始文件中的相同。<br /><br />在 WebLogic Builder 或管理控制台中创建的 DD 文件没有 XML 声明。更改这些文件的编码时，请在 XML 声明中设置编码特性，并为该文件设置相应的编码转换。<br /><br />关于使用管理控制台的说明<br /><br />管理控制台启动时使用的语言<br /><br />管理控制台首次启动时显示的语言是在 Web 浏览器中指定的首选语言。例如，如果使用的是简体中文版本的 Windows 和 Internet Explorer，则管理控制台在首次启动时将显示简体中文。如果希望将首次显示的语言更改为英语，可以将浏览器中的首选语言设置为英语。<br /><br />在 WebLogic Server 8.1 中可以选择的管理控制台语言<br /><br />简体中文/EUC-CN 简体中文/GBK 简体中文/GB18030 英语 请根据管理控制台所连接到的管理服务器的编码，选择 GB2312、GBK 或 GB18030。<br /><br />在管理控制台启动之后切换语言<br /><br />在管理控制台主页的“首选项”页上，从“语言”下拉列表中选择所需的语言。<br /><br /> <br /><br />编程<br /><br />关于使用 Servlet 和 JSP 的说明<br /><br />编码转换、标准、范围和首选项<br /><br />WebLogic Server 是一种 Java 应用程序，其中的所有字符串在内部都作为 Unicode 字符串进行处理。另一方面，对于 HTML 页使用各种字符集。在 WebLogic Server 中，在处理 HTML 数据时，会通过使用 Java 编码转换器在 Unicode 和 HTML 字符集之间执行编码转换。使用 WebLogic Server 时，一定要确定如何在应用程序中管理服务器内的 Unicode 字符串与 HTML 中所用编码之间的转换。<br /><br />WebLogic Server 有许多用于根据特定范围确定编码的参数，它允许您配置自己的应用程序的系统。<br /><br />而且，在 WebLogic Server 中，可以不考虑 Java VM 默认编码，而为所使用的每个模块指定不同的编码。<br /><br />在 WebLogic Server 中，用来设置编码的一些方法是由 J2EE 规范定义的。其他方法由 WebLogic 的专有规范定义。在这些方法中，下面是 JSP/Servlet 的设置项目列表，您无需指定其中的所有项目。请阅读下列描述并组合最适合您的环境的编码设置。<br /><br />编码设置<br /><br />与 JSP/Servlet 有关的编码设置包括：<br /><br />从 Servlet 输出的 HTTP 响应中使用的写入器编码 JSP 文件的编码 从 JSP 输出的写入器编码 HTTP 请求（如 GET/POST）的编码（对于特定的请求 URL） 数据（如 GET/POST）的编码（对于特定的 HTTP 请求） JSP 容器的编码 Java 编码和 IANA 字符集之间的映射 如果指定了多个参数，可以通过一组特定的规则来确定哪个参数有效。例如，如果 UTF-8 设置为 JSP 容器的默认编码，但在特定 JSP 的 page 标记中指定了 GB2312，则将使用 GB2312。一般来说，在较小范围中指定的编码具有较高的优先级。如有必要，可以在较大的范围中设置默认编码，并在较小的范围中设置特殊编码。<br /><br />建议您在整个应用程序中使用同一种编码。<br /><br />使用简体中文的一般步骤<br /><br />如上所述，WebLogic Server 提供一组用来指定编码的参数。在使用它时，必须指定从 HTTP 请求到 HTTP 响应的所有内容。在默认情况下，将使用 ISO-8859-1 编码。<br /><br />Servlet<br /><br />指定 HTTP 响应的编码 - response.setContentType() 指定浏览器显示的编码 - HTML Content-Type 指定 HTTP 请求的编码 - request.setCharacterEncoding 或 &lt;input-charset>JSP<br /><br />指定 JSP 文件的编码 - page 标记中的 pageEncoding 指令（可选） 指定页面输出的编码 - page 标记中的 contentType 指令 指定浏览器显示的编码 - HTML Content-Type 指定 HTTP 请求的编码 - request.setCharacterEncoding 或 &lt;input-charset><br />Servlet 和 JSP<br /><br />Java 编码和 IANA 字符集之间的映射（在 weblogic.xml 中设置）下列部分详细说明了 Servlet 和 JSP 的每个设置。<br /><br />Servlet<br /><br />指定 HTTP 响应的编码 - response.setContentType()<br /><br />要为由 Servlet 生成的 HTML 页面指定编码，请使用 setContentType() 方法。对 setContentType() 的调用指定下列内容：<br /><br />用于响应的 HTTP 头中的 ContentType 特性 用于输出响应的写入器编码 因此，在获得写入器之前，必须先调用 setContentType()。<br /><br />res.setContentType("text/html;charset=GB2312");PrintWriter out = res.getWriter();该调用指定 HTTP 头中的 contentType。这意味着同时指定了浏览器显示的编码。<br /><br />指定 HTTP 请求的编码 - request.setCharacterEncoding 或 &lt;input-charset><br /><br />现在，您已经指定了 HTTP 响应（使用上述方法从 WebLogic Server 发送到客户端的数据）的编码设置。下面描述了在将数据从客户端发送到 WebLogic Server 时，如何设置 HTTP 请求的编码。<br /><br />可通过三种方法指定 HTTP 请求的编码：<br /><br />将字符集写入 HTTP 请求的 contentType 中 <br />此方法最符合 HTTP 规范。但是，不能在 Microsoft Internet Explorer 或 Netscape 浏览器中指定该值。<br />在服务器上指定 HTTP 请求的编码 <br />使用 request.setCharacterEncoding() 方法。可以指定每个请求的编码。还可以执行更细化的操作（如动态控制编码）。另外，setCharacterEncoding() 符合 Servlet 2.3 规范。因此，可以实现应用程序可移植性。<br /><br />		request.setCharacterEncoding("GB2312");		String pval = request.getParameter(pname);使用 Web 应用程序部署描述符 (weblogic.xml) 中的 &lt;input-charset>，指定请求 URL 的编码。 <br />在 WebLogic Server 6.0 中，它在 web.xml 中进行设置。在 WebLogic Server 6.1 或更高版本中，它在 weblogic.xml 中进行设置。同时，元素名称等也进行了更改。因此，如果从 WebLogic Server 6.0 迁移，需要修改 weblogic.xml 和 web.xml 文件。<br />对于从客户端 Web 浏览器的请求 URL 中指定的资源，&lt;input-charset> 的值确定该资源的路径在服务器端的编码。<br /><br />示例：<br /><br />Obtain http://localhost:7001/webappa/path1/ in UTF-8 Obtain http://localhost:7001/webappa/path2/ in GB2312 系统允许使用这些配置。<br /><br />可以按如下所示描述 &lt;input-charset>。目标 Web 应用程序的 &lt;charset-params> 元素应当写在部署描述符 (weblogic.xml) 文件中。<br /><br />在 &lt;charset-params>（内嵌于 &lt;weblogic-web-app>）中，写入要为其指定编码的请求 URL 路径，以及要为 HTTP 请求指定的编码（用 IANA 名称）。<br /><br />有关 Java 编码名称和 IANA 字符集之间映射的信息，请参阅“Java 编码和 IANA 字符集之间的映射（在 weblogic.xml 中设置）”部分。<br /><br />下面是一个处理多个编码的 Web 应用程序的示例。<br /><br />在本例中，“/*”的编码设置为 UTF-8，“/rus/jo/*”的编码设置为 GB2312。<br /><br />&lt;charset-params>  &lt;input-charset>    &lt;resource-path>/*&lt;/resource-path>    &lt;java-charset-name>UTF-8&lt;/java-charset-name>  &lt;/input-charset>&lt;/charset-params>&lt;charset-params>  &lt;input-charset>    &lt;resource-path>/rus/joe/*&lt;/resource-path>    &lt;java-charset-name>GB2312&lt;/java-charset-name>  &lt;/input-charset>&lt;/charset-params>有关此设置的详细信息，请参阅“Developing Web Applications for WebLogic Server”中的 charset-params。<br /><br />JSP<br /><br />指定 JSP 文件的编码 - pageEncoding（可选）<br /><br />要指定 WebLogic Server JSP 容器或 JSP 编译器用来读取 JSP 文件的编码，请在 page 标记中指定 pageEncoding 指令，如下所示：<br /><br />&lt;%@ page contentType="text/html; charset=GB2312"  pageEncoding="GB2312" %>指定页面输出的编码 - page 标记中的 contentType 指令<br /><br />要指定页面输出的编码，请在 page 标记中指定 contentType 指令，如下所示：<br /><br />&lt;%@ page contentType="text/html; charset=GB2312" %>另外，当您在 page 指令中指定 contentType 时，会在 HTTP 响应的 HTTP 头中指定同样的 contentType，这意味着同时指定了浏览器显示的编码。<br /><br />如果未设置 pageEncoding 指令，会将 contentType 指令用作读取 JSP 文件的编码。<br /><br />如果 JSP 容器找到 contentType 设置，会停止解析 JSP 文件，将文件读取器切换到这个新指定的编码，重新从头解析 JSP 页。如果在一个文件中指定了多个 contentType，就会出现解析错误。因此，使用静态包含将一个文件包含在另一个文件中时，如果这两个文件都有各自的编码规范，就会出现错误。在动态包含中，不会出现错误，但是将生成乱码字符。<br /><br />注意：如果在一个文件中发现多个 contentType 实例，这两个实例都使用相同的值，则是有效的，不会导致解析错误。（有关详细信息，请参阅静态与动态包含以及编码差异）。<br /><br />&lt;jsp-param>  &lt;param-name>backwardCompatible&lt;/param-name>  &lt;param-value>true&lt;/param-value>&lt;/jsp-param>例如，当使用静态包含 (&lt;%@ include) 执行包含操作时，如果“包含源”和“包含目标”都有各自的 page 指令，并且一个转换单元有多个 page 指令，则只要每个 page 指令都指定相同的编码，就不会发生任何问题。<br /><br />指定 HTTP 请求的编码<br /><br />可以像在 Servlet 中一样，在 JSP 中指定 HTTP 请求的编码。有关详细信息，请参阅 Servlet 部分。<br /><br />&lt;%             request.setCharacterEncoding("GB2312");             String pval = request.getParameter(pname);         %>request.setCharacterEncoding or &lt;input-charset>Servlet 和 JSP<br /><br />Java 编码与 IANA 字符集之间的映射（在 weblogic.xml 中设置）<br /><br />在 page 标记中使用 setContentType() 方法或 contentType 指令指定编码时，请使用 IANA 字符集名称。但是，在 Java 应用程序 WebLogic Server 中处理这些编码时，这些值必须是 Java 编码名称。WebLogic Server 内部还有默认映射，通常情况下会使用默认映射。默认映射还包含 IANA 中未定义（但通常在 HTML 的 Content-Type 中使用）的映射。（请参阅 WebLogic Server 中定义的 MIME-Java 编码映射表。）<br /><br />示例：x-sjis ----> Shift_JIS<br /><br />可以根据自己的需要更改此映射。请按如下所示在 Web 应用程序部署描述符中设置映射。<br /><br />例如，contentType 中的“Shift_JIS”设置在 WebLogic Server 中作为 SJIS 进行处理，这是因为 IANA 字符集“Shift_JIS”映射到 Java 编码“Shift_JIS”（在 JDK1.4 中，Shift_JIS 作为 SJIS 的别名使用）。<br /><br />注意：在 Java 1.3 中，IANA 字符集 GB2312 作为 MS936 处理（从 JDK 1.1.8 到 JDK 1.4.0。在 JDK1.4.1 或更高版本中，Shift_JIS 作为 SJIS 处理）。<br /><br />这样通过默认设置即可使用 MS932 特定的字符集（@ 等）。<br /><br />为了分配和使用与默认映射不同的编码，请使用下列步骤覆盖默认映射。在 Web 应用程序的部署描述符 (weblogic.xml) 文件中配置 &lt;charset-mapping> 元素。<br /><br />在下面的示例中，Shift_JIS 映射到 MS932。<br /><br />&lt;charset-params>  &lt;charset-mapping>    &lt;iana-charset-name>Shift_JIS&lt;/iana-charset-name>    &lt;java-charset-name>MS932&lt;/java-charset-name>  &lt;/charset-mapping>&lt;/charset-params>请注意，此设置不符合 J2EE。在 WebLogic Server 6.0 中，它在 web.xml 中进行设置。在 WebLogic Server 6.1 或更高版本中，它已经更改为在 Web 应用程序部署描述符 weblogic.xml 中进行设置。同时，元素名称等也进行了更改。因此，如果从 WebLogic Server 6.0 迁移，需要修改 weblogic.xml 和 web.xml 文件。<br /><br />使用 ISO-8859-1 编码对 HTTP 请求进行编码的方法<br /><br />如果在 &lt;input-charset> 中将 ISO-8859-1 指定为 HTTP 请求的编码，您仍可以使用下列方法获取具有另一编码的 HTTP 请求。<br /><br />示例：<br /><br />new String(request.getParameter(itemQ[i]).getBytes ("8859_1"), "GB2312")但是，如果 HTTP 客户端用于 HTTP 响应的 HTTP 头中的 contentType 按如下方式指定，则该 HTTP 客户端不能使用此方法。这是因为 HTTP 头中的 contentType 中指定的编码优先于 &lt;input-charset> 中指定的编码。在这种情况下，必须修改应用程序代码。<br /><br />Content-Type:application/x-www-form-urlencoded;charset=gb2312静态与动态包含以及编码差异<br /><br />静态包含<br /><br />&lt;%@ include file="relativeURL" %>在这种情况下，在执行 JSP 编译之前，将在一个文件中加载和收集所有包含文件。在 WebLogic Server 6.1 或更早版本中，如果在执行包含操作的文件中指定编码，则被包含的文件将作为编码与包含文件相同的文件进行处理（即使尚未指定其编码）。在 WebLogic Server 8.1 中，如果它们有各自的 page 指令，则会出现编译错误。要避免此问题，请将 weblogic.xml 中的“backwardCompatible”设置为 True。<br /><br />如果“包含源”与“包含目标”的编码设置不同，则会出现 JSP 编译错误。<br /><br />动态包含<br /><br />&lt;jsp:include page="{ relativeURL | &lt;%= expression %>}" flush="true" />如果使用 jsp:include，加载页面时不会包含此页面，而是留在标记状态中。当执行 JSP 时将包含此页面。因此，执行包含操作的 JSP 中设置的编码不会应用于被包含的文件。<br /><br />因此，还必须在被包含的文件中指定编码。<br /><br />CGIServlet<br /><br />将使用多字节字符的 CGI 服务迁移到 WebLogic Server 中的 CGI Servlet 时，必须在 CGI 程序生成的 HTTP 头中指定适当的 contentType 字符集参数。如果未设置 contentType，则使用 ISO-8859-1，它是 J2EE Servlet 容器的默认编码。<br /><br />还必须使用 input-charset 参数，以便从客户端正确接收输入字符串。您需要将它写入到目标 Web 应用程序的 DD 文件中。如果未设置它，则使用 ISO-8859-1。<br /><br />WebService<br /><br />SOAP 消息及其编码的处理<br /><br />接收 SOAP 消息<br /><br />在 WebLogic Server Web Service 中，编码处理符合 SOAP1.1 和 SOAP1.2 规范（*注释 1）。SOAP 1.1 HTTP/SOAP 消息的媒体类型是“text/xml”，其编码处理在 RFC2376 中定义。对于 SOAP 1.2 HTTP/SOAP 消息，媒体类型是“application/soap+xml”，其编码处理在 RFC3023 中定义。这些 RFC 规范定义下列行为：<br /><br />SOAP 1.1<br /><br />HTTP 头中的 ContentType 字符集参数用于确定 HTTP/SOAP 请求的编码。 忽略 XML 声明中的编码特性。 如果未使用 contentType 指定字符集，则此消息将作为 US-ASCII 进行处理。 SOAP 1.2<br /><br />HTTP 头中的 ContentType 字符集参数用于确定 HTTP/SOAP 请求的编码。 忽略 XML 声明中的编码特性。 如果未使用 contentType 指定字符集，则使用 XML 声明中的编码特性。 如果未指定 XML 声明中的 contentType 字符集参数或编码特性，则此消息将作为 UTF-8 进行处理。 与 WebLogic Server 一样，WebLogic Workshop 也根据此规范进行操作。因此，对于使用 HTTP/SOAP 来调用 WebLogic Workshop 开发的 Web Service 的客户端，请确保指定了正确的 contentType 字符集。<br /><br />发送 SOAP 消息<br /><br />WebLogic Server 生成的所有 HTTP/SOAP 消息都以 UTF-8 编码。在生成过程中，会将“encoding=UTF-8”添加到 SOAP 消息的 HTTP 头中。<br /><br />注意：以英语区域(locale)设置（例如在 UNIX 中指定 LANG=C）启动 WebLogic Server 时，在 SOAP 消息中只能使用 us-ascii 字符，不支持其他字符。如果要在 Web Service 中使用简体中文字符，请使用简体中文区域(locale)设置启动 WebLogic Server。<br /><br />如果要在以英语区域设置启动的 WebLogic Server 上使用 us-ascii 之外的其他字符，请在 WebLogic Server 启动脚本文件中设置下列启动选项。这甚至可以使 WebLogic Server 在英语区域设置环境中以 UTF-8 生成消息。<br /><br />注意：对于 SOAP 消息，强烈建议使用 UTF-8。<br /><br />-Iweblogic.webservice.i18n.charset=utf-8Web Service 主页<br /><br />Web Service 主页是以服务器 VM 默认编码生成的。<br /><br />UDDI 浏览器<br /><br />UDDI 浏览器只支持 us-ascii 字符。它不能正确处理多字节字符。<br /><br />XML --- StreamParser 中的多字节字符处理<br /><br />要将编码信息添加到使用 XML 流 API 生成的 XML 头中，请按如下方式使用 ElementFactory 类的 createStartDocument()：<br /><br />XMLOutputStreamFactory factory = XMLOutputStreamFactory.newInstance();XMLOutputStream output = factory.newOutputStream(new                    OutputStreamWriter(new FileOutputStream(fname),"GB2312")); output.add(ElementFactory.createStartDocument("GB2312","1.0"));output.flush();下面是关于使用 XML 流 API 解析包含简体中文字符的 XML 文档的说明。<br /><br />当通过流为解析器提供输入时，请使用字节流。这可以启用解析器的 XML 编码自动检测。解析器可以生成字符流，该字符流使用由 XML 声明中的编码特性指定的编码，从而确保能够进行正确的解析。<br /><br />当通过 Unicode 字符流提供输入时，解析器将忽略 XML 头中的编码设置。在这种情况下，用户负责提供适当的字符流。<br /><br />JDBC<br /><br />设置 WebLogic jDriver for Oracle 的使用环境<br /><br />要使用 weblogic.jdbc.oci.Driver，请按如下所示设置环境。请注意，需要设置 jDriver 许可证。<br /><br />将下列更改添加到 startWebLogic.cmd 文件。 <br />指定 Oracle 的 bin 目录的路径和 WebLogic Oracle Oci 驱动程序本地库的 bin 目录的路径。请根据 Oracle 版本使用相应的 Oci 驱动程序。<br /><br />对于 Oracle 8.1.7：%WL_HOME%\bin\oci817_8;d:\oracle\ora81\bin<br /><br />对于 Oracle 9.0.1：%WL_HOME%\bin\oci901_8;d:\oracle\ora90\bin<br />指定 Oracle 环境变量 NLS_LANG。 <br />NLS_LANG 的编码与 weblogic.codeset（jDriver for Oracle 的连接属性）的编码必须始终相同。<br /><br />NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK有关 NLS_LANG 与 weblogic.codeset 之间的关系的信息，请参阅“Configuring and Using WebLogic jDriver for Oracle”中的 Advanced Oracle Features。如果可以指定下列编码：为 Oracle 数据库指定 ZHS16GBK、为 NLS_LANG 指定 SIMPLIFIED CHINESE_CHINA.ZHS16GBK 以及为 weblogic.codeset 指定 MS936，则 Windows 平台上使用的字符集可以存储在 Oracle 数据库中。<br /><br />现在，无需使用 WebLogic Server 的连接池，即可使用 WebLogic Server jDriver for Oracle。例如，可以直接从 JDBC 客户端（如 JSP 或 Servlet）连接到数据库。有关当 JDBC 客户端使用 WebLogic Server jDriver for Oracle 时的编程信息，请参阅“Configuring and Using WebLogic jDriver for Oracle”中的 Connecting to an Oracle DBMS。<br /><br />如果使用连接池，需要在管理控制台中进行下列设置。有关如何设置连接池的详细信息，请参阅“Installing and Using WebLogic jDriver for Oracle”中“Installing WebLogic jDriver for Oracle”一章的 Setting Up a Connection Pools 部分。下面是设置样例。<br />管理控制台 <br />设置连接属性。 <br /><br />URL:jdbc:weblogic:oracleDriver Class Name:weblogic.jdbc.oci.DriverProperties:user=scottpassword=tigerserver=ora81weblogic.codeset=MS936选择要在目标中使用的服务器或群集。 <br />重新启动 WebLogic Server。 现在即可使用 WebLogic Server jDriver for Oracle。<br /><br />设置 Oracle Oci 驱动程序的使用环境<br /><br />将下列更改添加到 startWebLogic.cmd 文件。 <br />将下列内容添加到 CLASSPATH 环境变量： <br /><br />d:\oracle\ora81\jdbc\lib\classes12.zip;d:\oracle\ora81\jdbc\lib\nls_charset12.zip将下列目录添加到 PATH 环境变量： <br /><br />c:\oracle\ora81\bin现在，无需使用 WebLogic Server 的连接池，即可使用 Oracle Oci 驱动程序。例如，可以直接从 JDBC 客户端（如 JSP 或 Servlet）连接到数据库。有关当 JDBC 客户端使用 Oracle Oci 驱动程序时的编程信息，请参阅 Oracle 文档。<br /><br />如果使用连接池，需要在管理控制台中进行下列设置。下面是设置样例。<br />在管理控制台中设置下列内容： <br />设置连接属性。 <br /><br />URL:jdbc:oracle:oci8:@ora81Driver Class Name:oracle.jdbc.driver.OracleDriverProperties:user=scottpassword=tiger选择要在目标中使用的服务器或群集。 <br />重新启动 WebLogic Server。 现在即可使用 Oracle Oci 驱动程序。<br /><br />设置 Oracle 瘦驱动程序的使用环境<br /><br />对于瘦驱动程序，不需要指定 NLS_LANG 环境变量。<br /><br />将下列更改添加到 startWebLogic.cmd 文件。 <br />将下列内容添加到 CLASSPATH 环境变量： <br /><br />d:\oracle\ora81\jdbc\lib\classes12.zip;d:\oracle\ora81\jdbc\lib\nls_charset12.zip将下列目录添加到 PATH 环境变量： <br /><br />c:\oracle\ora81\bin现在，无需使用 WebLogic Server 的连接池，即可使用 Oracle 瘦驱动程序。例如，可以直接从 JDBC 客户端（如 JSP 或 Servlet）连接到数据库。有关当 JDBC 客户端使用 Oracle 瘦驱动程序时的编程信息，请参阅 Oracle 文档。<br /><br />如果使用连接池，需要在管理控制台中进行下列设置。下面是设置样例。<br />在管理控制台中设置下列内容： <br />设置连接属性。 <br /><br />URL:jdbc:oracle:thin:@jpsol1:1521:ora81Driver Class Name:oracle.jdbc.driver.OracleDriverProperties:user=scottpassword=tiger选择要在目标中使用的服务器或群集。 <br />重新启动 WebLogic Server。 现在即可使用 Oracle 瘦驱动程序。<br /><br />同时连接到编码不同的数据库时的限制<br /><br />使用 OCI 驱动程序时，必须为 NLS_LANG 和 weblogic.codeset 指定相同的编码。如果这些参数设置为相同的值，将在 Oracle 端执行编码转换，因为您是作为具有特定 NLS_LANG 的客户端连接到 Oracle 端的。如果两个参数相同，则无论数据库的编码如何，都能成功进行连接。
          <br/><br/>
          <span style="color:red;">
            <a href="http://gloryme.javaeye.com/blog/166582#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 02 Mar 2008 00:01:21 +0800</pubDate>
        <link>http://gloryme.javaeye.com/blog/166582</link>
        <guid>http://gloryme.javaeye.com/blog/166582</guid>
      </item>
      <item>
        <title>JSP高访问量下的计数程序</title>
        <author>gloryme</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gloryme.javaeye.com">gloryme</a>&nbsp;
          链接：<a href="http://gloryme.javaeye.com/blog/158274" style="color:red;">http://gloryme.javaeye.com/blog/158274</a>&nbsp;
          发表时间: 2008年01月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>有时要为每一篇文章统计其点击次数，如果每一次浏览都要更新一次库的话，那性能在访问量很大的情况下，服务器的压力就会很大了，比较好一点的方法就是先将要更新的数据缓存起来，然后每隔一段时间再利用数据库的批量处理，批量更新库。源码如下： </p><p>CountBean.java</p><pre name="code" class="java">public class CountBean {
　private String countType;
　int countId;
　/** Creates a new instance of CountData */
　public CountBean() {}
　public void setCountType(String countTypes){
　　this.countType=countTypes;
　}
　public void setCountId(int countIds){
　　this.countId=countIds;
　}
　public String getCountType(){
　　return countType;
　}
　public int getCountId(){
　　return countId;
　}
}</pre><p>&nbsp;CountCache.java</p><pre name="code" class="java">public class CountCache {
　public static LinkedList list=new LinkedList(); 
　/** Creates a new instance of CountCache */
　public CountCache() {}
　public static void add(CountBean cb){
　　if(cb!=null){
　　　list.add(cb);
　　}
　}
}

　CountControl.java

　/*
　* CountThread.java
　*
　* Created on 2006年10月18日, 下午4:57
　*
　* To change this template, choose Tools | Options and locate the template under
　* the Source Creation and Management node. Right-click the template and choose
　* Open. You can then make changes to the template in the Source Editor.
　*/

package com.tot.count;
import tot.db.DBUtils;
import java.sql.*;
/**
*
* @author http://www.tot.name
*/
public class CountControl{ 
　private static long lastExecuteTime=0;//上次更新时间　
　private static long executeSep=60000;//定义更新间隔时间，单位毫秒
　/** Creates a new instance of CountThread */
　public CountControl() {}
　public synchronized void executeUpdate(){
　　Connection conn=null;
　　PreparedStatement ps=null;
　　try{
　　　conn = DBUtils.getConnection(); 
　　　conn.setAutoCommit(false);
　　　ps=conn.prepareStatement(&quot;update t_news set hits=hits+1 where id=?&quot;);
　　　for(int i=0;i＜CountCache.list.size();i++){
　　　　CountBean cb=(CountBean)CountCache.list.getFirst();
　　　　CountCache.list.removeFirst(); 
　　　　ps.setInt(1, cb.getCountId());
　　　　ps.executeUpdate();⑴
　　　　//ps.addBatch();⑵
　　　}
　　　//int [] counts = ps.executeBatch();⑶
　　　conn.commit();
　　}catch(Exception e){
　　　e.printStackTrace();
　　} finally{
　　try{
　　　if(ps!=null) {
　　　　ps.clearParameters();
ps.close();
ps=null;
　　}
　}catch(SQLException e){}
　DBUtils.closeConnection(conn);
　}
}
public long getLast(){
　return lastExecuteTime;
}
public void run(){
　long now = System.currentTimeMillis();
　if ((now - lastExecuteTime) ＞ executeSep) {
　　//System.out.print(&quot;lastExecuteTime:&quot;+lastExecuteTime);
　　//System.out.print(&quot; now:&quot;+now+&quot;\n&quot;);
　　// System.out.print(&quot; sep=&quot;+(now - lastExecuteTime)+&quot;\n&quot;);
　　lastExecuteTime=now;
　　executeUpdate();
　}
　else{
　　//System.out.print(&quot;wait for &quot;+(now - lastExecuteTime)+&quot; seconds:&quot;+&quot;\n&quot;);
　}
}
}
//注：如果你的数据库驱动支持批处理，那么可以将⑵,⑶标记的代码前的注释去掉，同时在代码⑴前加上注释</pre><p>&nbsp;</p><pre name="code" class="java">jsp页面中</pre><pre name="code" class="java">＜%
CountBean cb=new CountBean();
cb.setCountId(Integer.parseInt(request.getParameter(&quot;cid&quot;)));
CountCache.add(cb);
out.print(CountCache.list.size()+&quot;＜br＞&quot;);
CountControl c=new CountControl();
c.run();
out.print(CountCache.list.size()+&quot;＜br＞&quot;);
%＞</pre>&nbsp;
          <br/><br/>
          <span style="color:red;">
            <a href="http://gloryme.javaeye.com/blog/158274#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts