Weblogic Server学习笔记

由于操作系统、浏览器、数据库、 JVM采用的字符集都不一样,基于WeblogicServer开发的应用经常出现中文显示乱码问题,其实在WeblogicServer上运行的WEB应用有很多与字符集有关的设置,下面做一个总结,为了正确处理中文,最好把这些设置都设上。
 
1.    在 JSP文件头加入
<%@pagecontentType=“ text/html;charset=GBK“%>
指定该 JSP采用的字符集。只是提示浏览器使用什么编码解析html,不是根本的乱码问题,也就是客户端可以直接习惯浏览器编码方式
 
 
2.在 Weblogic.xml文件的<jsp-descriptor>中加入:
<jsp-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</jsp-param>
 
指定 JSP文件中采用的字符集,在JSP文件中的<%@pagecontentType=“text/html;charset=GBK“%>会覆盖该设置
 
3.在 Weblogic.xml文件的<jsp-descriptor>中加入
<jsp-param>
<param-name>compilerSupportsEncoding</param-name>
<param-value>true</param-value>
</jsp-param>
 
如果为 TRUE,指定在编译JSP文件时,采用在JSP文件中定义的
<%@pagecontentType=“ text/html;charset=GBK“%>或<jsp-descriptor>中定义的encoding参数中定义的字符集进行编码,如果为 FALSE,则采用JVM中默认指定的字符集进行编码。
 
 
4.  需要把HTTPrequest(GET和POST)中的数据从它的原始编码转化为Unicode,以便JavaservletAPI进行处理,为了做这种转换,WeblogicServer需要知道HPPTrequest中的数据的编码方式。这可以通过在Weblogic.xml的<context-param>中设置.WeblogicServer
<input-charset>
<resource-path>/</resource-path>
<java-charset-name>GBK</java-charset-name>
</input-charset>
 
 
5. 从 ORACLE数据库中检索出来的中文显示不正确时,在这种情况下,如果数据库使用的是中文字符集,并使用的是Type2JdbcDriver时,可加入Weblogic.codeset=GBK的属性来解决这个问题。最好在配置POOL时直接指定。
 
代码如下:
java.util.Propertiesprops=newjava.util.Properties();
props.put("Weblogic.codeset","GBK");
props.put("user","scott");
props.put("password","tiger");

StringconnectUrl="jdbc:Weblogic:oracle";

DrivermyDriver=(Driver)
Class.forName("Weblogic.jdbc.oci.Driver").newInstance();

Connectionconn=
myDriver.connect(connectUrl,props);
 
6.如果是采用 WTC调用Tuxedo中的服务,在JSP页面中无法正确显示中文,必须使安装Tuxedo的服务器上的NLS_LANG环境变量与数据库中的字符集的设置一样。如后台Oracle数据库中的字符集设置为SIMPLIFIEDCHINESE_CHINA.ZHS16GBK,那么Tuxedo应用服务器上的NLS_LANG环境变量应设置为:export   NLS_LANG="SIMPLIFIEDCHINESE_CHINA.ZHS16GBK"
7. 在 SUN 操作系统上
在 SUN 操作系统上,如果在启动机器的时候选择ENGLISH环境,那么在JSP等中会出现乱码。可以在启动机器的时候选择中文环境。或者,在WLS的启动脚本中设置下面的环境变量:
LANG=zh_CN.GBK
export LANG
 
8. 从客户端语言地区设置-weblogic所在操作系统语言地区设置-java编译选项-数据库语言地区设置,这些设置要完全一致,你才能正确看到中文。
客户端语言地区设置:客户端主要使用windows平台,一般应该没有问题。我只在别人的案例里看见过有修改客户端语言地区设置,如果你实在穷途末路,再考虑这个。
weblogic所在操作系统语言地区设置:如果是中文windows,应该也没有什么问题。如果是unix/linux,那么要在启动weblogic的用户的profile里加上LANG=zh,具体的语言,要看你的操作系统而定。注意你如果是su切换用户,一定要su - xxx,不然也会乱码。
java编译选项:这个我一般都会加上,在我的系统里使用ant,我会在build.xml里加上encoding,一般指示javac -encoding GB2312。
数据库语言环境设置:这个我不是特别熟悉,一般你用pl/sql能正确往数据库插入中文记录,那么你就别期望指责数据库了。

最后给一个救命绝招,request.setCharaterEncoding("GB2312")。在你实在没辙的时候,试试这个。但是这个使用起来要谨慎,它如果执行1次以上,也会出现乱码。而且不一定适应所有平台环境,想想你的系统写好了一堆jsp,结果跑到客户那里安装不正确,难道你要修改所有的页面吗?
WeblogicServer7.0在安全方面与 WeblogicServer6.1相比有很大的变化,在WeblogicServer7.0中默认采用LDAPServer:embeddedLDAPserver来保存用户、组、认证、授权等信息。在WeblogicServer6.1中默认是采用文件系统俩保存用户、组、认证、授权等信息。
embeddedLDAPserver是 WeblogicServer7.0自带的一个LDAPserver。如果要对embeddedLDAPserver进行写操作,先在Adminserver上的embeddedLDAPserver进行,然后复制到managedserver上。如果是读操作。直接从本地的managedserver上读取。
在 WeblogicConsole中可直接对embeddedLDAPserver进行配置,直接进行用户、组的增、删、改或权限设置等。也可以在程序中通过JMX进行这些操作。如在Weblogic7.0中用编徎的方法增加一个用户的方法如下:
importjava.util.*;
importjavax.management.*;
importWeblogic.management.*;
importWeblogic.security.providers.authentication.*;
importWeblogic.management.security.authentication.AuthenticationProviderMBean;
importWeblogic.management.security.authentication.*;
 
publicclasstest2
{
publicstaticvoidmain(String[]args)
{
 
MBeanHomeadminHome;
Stringurl=“t3://127.0.0.1:7001“;
 
 
adminHome=(MBeanHome)Helper.getAdminMBeanHome(“username“,“password“,url);
 
AuthenticationProviderMBean[]providers=adminHome.getActiveDomain().getSecurityConfiguration().findDefaultRealm().getAuthenticationProviders();
 
for(inti=0;providers!=null&&i<providers.length;i++)
{
if(providers[i]instanceofUserEditorMBean)
{
UserEditorMBeaneditor=(UserEditorMBean)providers[i];
try
{
editor.createUser(“username“,“password“,“description“);
}
catch(Exceptione)
{
e.printStackTrace();
}
}
}
}
}
}
 
 
 
DataSource是一种非事务性的数据源,它以自动提交事务的方式工作,所以即使采用 CMP,它也会在插入或者更新记录时立即提交事务。这样在EJB-JAR部署描述符中的事务描述符就失去了意义。而TxDataSource则是一种事务性的数据源,当采用CMP时,容器会根据部署描述符接管对事务的控制,所以如果你需要用CMP开发企业应用,请务必使用TxDataSource
在下面的应用情形中必须使用 TxDataSource,不能使用DataSource:
采用 JTA(JavaTransactionAPI)进行事务处理
采用 EJBcontainer进行事务处理,如 CMP方式的ENTITYEJB
在一个事务中涉及对多个数据库的更新操作
在一个事务中涉及到多种资源,如数据库, JMS
多个 SERVER使用同一个数据库连接池
 
 
 
 
WeblogicServer应用服务器做为电子商务的基础平台,经常需要与其他系统进行集成,如与 MQSeries或其他消息中间件进行通讯,从WeblogicSever6.0开始,WeblogicSever通过WeblogicMessagingBridge使你可以在两个消息系统之间进行消息转发。采用WeblogicMessagingBridge,使你可以:
1.      在两个 WeblogicServer应用系统之间进行消息转发,这两个WeblogicServer的版本可以不同,如WeblogicServer7.0与WeblogicServer6.1之间。
2.      在 WeblogicJMS与其他的JMSServer之间进行消息转发,如:WeblogicServer与之间。
3.      在 WeblogicJMS与其他的非JMS的消息中间件之间进行消息转发。
通过 WeblogicMessagingBridge,WeblogicServer可以和IBMMQSeries、ProgressSonicMQ、FioranoJMS、IBusMessageServer等第三方的消息产品进行连接。还可以和其他符合JMS标准的JMSServer进行连接。
WeblogicJMS支持 XA,通过WeblogicMessagingBridge,其他支持XA的消息产品可以与WeblogicJMS一起参与分布式事务。
通过 WeblogicMessagingBridge,其他的消息产品之间给WeblogicServer上的MDB发送请求。
4.      WeblogicMessagingBridge包括一个消息源和消息目的地,如果是 WeblogicJMS与其他的JMS产品之间进行消息转发,消息源和消息目的地之间通过WeblogicServer本身提供的ADAPTER进行通讯,如果是WeblogicJMS与其他非JMS的消息系统进行通讯,则需要通过专门的Adapter.WeblogicServer本身不提供这些Adapter。可通过BEA的PS部门或其他厂家得到这些Adapter。
消息源和消息目的地可以是队列或主题( queuesortopics),你还可以指定消息的确认方式,或对消息进行过滤。进行连接管理,安全管理,和事务控制。
在控制台中对 WeblogicMessagingBridge进行配置,还可以对它的状态进行监控。
 
 
 
如果是一个ZIP文件:
java –cp    tuxedo80.zip   install
在AIX上的安装方式与别的操作系统不一样
j ava   -Djdk.check.override=true -classpath   pj_platform701_generic.jar   com.bea.i
nstaller.BEAInstallController -mode=console
如果是光盘上的文件显示为pj_ser1.jar. 那么 pj_platform701_generic.jar 要改为pj_ser1.jar
注意,在AIX上如果JDK为1.3.0会抛出EXCEPTION:CLASSNOTFOUND。
 
 
 
 
<%@pageimport="weblogic.kernel.Kernel"%>
<%!
publicvoiderrlog(Strings)
       {
      
       weblogic.logging.LogManagerlogmanager=Kernel.getLogManager();
       logmanager.log(128,"xcj***",s);
      
       }
%>
 
 
####<2003-2-24 下午 10时41分51秒> <Critical> <WebLogicServer>
<app_server1> <myserver> <ListenThread> <system> <> <000204> <Failed
to listen on port 7001, failure count: 2, failing for 1,046,097,710
seconds, java.net.SocketException: Too many open files>
导致 WEBLOGIC SERVER 死掉:
 
 
在 UNIX系统上,每一个SOCKET连接要占用一个文件句柄,而每个进程能打开的句柄数是有限制的,如果一个进程能打开文件句柄的最大数太小,就会出现上面的错误,要修改系统的内核才行。
在 LIUNX系统上修改方法如下:
在 Linux内核2.4.x中需要修改源代码,然后重新编译内核才生效。编
辑Linux内核源代码中的 include/linux/fs.h文件,将 NR_FILE 由8192改为
65536,将NR_RESERVED_FILES 由10 改为 128。编辑fs/inode.c 文件将
MAX_INODE 由16384改为262144。一般情况下,系统最大打开文件数比较合理的 设置为每4M物理内存256,比如256M内存可以设为16384,而最大的使用的i节点 的数目应该是最大打开文件数目的3倍到4倍。
另外,对每个进程的设置:
ulimit -n 4096 将每个进程可以打开的文件数目加大到4096,缺省为1024
ulimit -m 4096 限制每个进程使用的内存数
每个进行能使用的内存也是有限制的。同样要做调整。
 
 
 
不要把SERVLET的类文件放到系统的CLASSPATH中,否则它不能动态加载
 
一个WAR文件如果时只读的,发布会不成功,应该把只读属性去掉
 
<jsp-param> <param-name>workingDir</param-name> <param-value>adirectoryname</param-value> </jsp-param>
 
具体可以拿到系统线程池当前指标的接口
WEBLOGIC提供MBEAN,可从MBEAN中得到系统的运行、配置信息,从ExecuteQueueRuntimeMBean中可以得到并发线程数等消息。具体请参考:http://e-docs.bea.com/wls/docs70/javadocs/index.html
 
设置virtual-directory-mapping
weblogic.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE weblogic-web-app
    PUBLIC "-//BEA Systems, Inc.//DTD Web Application 7.0//EN"
    "http://www.bea.com/servers/wls700/dtd/weblogic700-web-jar.dtd" >
<weblogic-web-app>
 <virtual-directory-mapping>
    <local-path>C:/</local-path>
     <url-pattern>images/*</url-pattern>
       <url-pattern>*.jpg</url-pattern>
 </virtual-directory-mapping>
</weblogic-web-app>
WEB APPLICATION的的目录名为tornadoAdmin
把6.jpg放到c:/images目录下
通过如下方式访问:
注意:要把目录的最后一层配置成<url-pattern>, 目录的其他部分配置成<local-path>
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值