??xml version="1.0" encoding="utf-8" standalone="yes"?> 您的门户出现用户h在资源中挂v情况的频率是多高Q我希望q种情况不经常发生。然而,如果出现了这U情况,而且资源不断挂v用户hQ则门户会面临耗尽所有已配置的ƈ发用戯求ƈ最l崩溃的致命风险。这是一场灾难。我到q几ơ这L情况Qƈ军_保护我的门户不再受类似情늚影响?/p>
我们需要让门户包含几个hd控gQ通过用于每个Portlet的备份文件提供)的Portlet。对于每个请求,创徏一个备份文Ӟ备䆾文g在用戯求方面是U程安全的。在d控g中,备䆾文g的init()ҎQ或preRender()ҎQ调用独立的安全服务Q资源)API以获得资源访问授权。对于业务处理,Portlet也通过其他API调用用戯求委托到业务层。一切都q行正常Q直C个对资源的调用未q回到PortletQ即Q由于某U原因,它在某处挂v了。以下是一个具体示例?/p>
我们假定WebLogic Portal使用EJB作ؓ业务层和/或安全服务中的资源。此EJB操作其他资源Qƈ通过使用JMS发送消息的方式报告处理状态。此EJB与其他应用程序一起部|在集群中。门户部|在另一个物理机器上。如果共同部|的一个应用程序引发了内存错误Q则整个集群Q包括EJBQ都会挂P卛_不返回请求也不抛出异常。事实上Q讨论如此显著的失效是没有必要的Q从门户的角度来_“挂起”模式仅是门L动态ƈ发生命周期中的一U返回得q慢、gq过久以至于不能接受的响应。例如,延迟可能׃服务器过载或数据库出现问题引P但这是不相干的——备份文件中的线E运行时间超Z正常门户工作的允许范_辑ֈ了门户中的“最大ƈ发用h”。此门户完全停止接受用户h——这成了问题?/p>
我首先想到的是,在Portlet用于讉K其资源的RMI客户端(即EJB客户端)上设|超Ӟq程Q客LQ超Ӟ。然而,关于使用RMI时的WebLogic指导原则列出了关于此c超时的几条限制Q其中包括“在调用中不涉及JMS资源。”这是_不能对EJB资源使用时。我提及q种情况只是Z说明存在门户可能未被保护以不受挂L资源U程影响的情c即使没有关于超时的限制Q如果请求挂L速度快于时释放相关U程的速度Q问题就依然存在?/p>
我想介绍一U针Ҏ问题的可能解x案。此解决Ҏ在下面的条g下有效:门户h一些独立于可能会挂L资源的内Ҏ功能。就是说Q门户可以运行部分功能?/p>
此解x案包?个组Ӟ监控、决{规则和规则实施Ҏ。此解决Ҏ的原理很单:门户监控q行中的资源调用Q从而监控被调用的资源线E,对运行过久的资源U程的数量进行计敎ͼriskCounterValueQ,然后应用决策规则Q如“如果riskCounterValue辑ֈ或超出预定义的阈|riskThresholdQ,则所有传入的Ҏ资源的调用均被拒l,直到riskCounterValue于riskThreshold。”用此规则可以限制可能“挂起”的资源U程数量Q而且可能使用化功能处理用戯求。例如,如果门户包含4个PortletQ用于一个Portlet的某些资源线E被认ؓ“存在挂L风险”,则门户可以蟩q存在风险的Portlet而仅对用hC?个Portlet?/p>
规则实施Ҏ的实现非帔R要。如果此规则在每个调用的范围内执行,我们可以预见性能会降低,但是可以L地控制可能“挂起”的资源U程。如果此规则在调用以外执行,我们可以保持性能Q但是对此类控制的调整是需要技巧的。我们将详细讨论后一U情c图1的图描述了这U情c?/p>
如图所C,在第一步中Q门户初始化一个Helper对象Q而此Helper对象则初始化一个CallRegistry对象。后者可作ؓjava.util.HashMap实现Qƈ用于注册所有对资源API的调用。然后Helper启动一个watchdogU程。例如,如果使用StrutsQ则此线E就在模型中启动。watchdogU程定期查CallRegistry中的记录Q对q行旉q长的调用数量进行计敎ͼq将其设|ؓHelper中的riskCounterValue变量?/p>
假定我们大概知道API调用的正常执行时间。该|最长持l时_可以用于所有的APIQ或者每个API可以h其单独的执行旉。因此,当调用一个APIҎӞ我们可以计算此API在正常情况下预期完成的时_例如Q?/p>
当调用Helper的方法时Q它一条新记录dqCallRegistry。此记录包括一个惟一的调用IDQ用作java.util.HashMap中的键)和用于API的预期完成时_timeToCompleteQ(用作java.util.HashMap中的|。如果此Ҏ成功完成Q它会从CallRegistryU除其记录?/p>
让我们来看一下用戯求是如何处理的。接到用戯求后QPortlet的备份文件将其委托给Helper APIҎQ后者调用资源APIQ。首先,此Helper APIҎ查其是否可以执行。如果接到请求的时候尚未达到riskThresholdQ则此Helper APIҎl箋q行。否则,它会抛出一个异常,门户会l下一功能或下一个API调用?/p>
仅在q行旉q长的资源线E数量(riskCounterValueQ小于riskThreshold的情况下才可以赋予执行的权限。通过配置属性设|riskThreshold。例如,如果ƈ发用戯求最大值配|ؓ25Q则riskThreshold可以讄?0。这是_门户处理q发用户h的能力仅存在一半风险,它在资源U程开始挂L情况下仍然可以运行?/p>
h意我们不对运行时间过长的API调用q行M操作。它们中的一些最l可以成功完成,Helper APIҎ会将其记录从CallRegistryU除Q即下一ơ计数可能会低于riskThresholdQ下一ơ针对资源的用户h可能不会被拒l(通过抛出异常的方式)?/p>
门户无法知道|络中是否存在意外gq或者资源线E是否确实挂赗因此,推荐在几个顺序控制周期中辑ֈ或超出riskThreshold时给操作团队发送一个通知Q例如,通过电子邮gQ。收到的通知允许操作团队q速分析日志,及时扑ֈq解册行时间过长的调用的原因?/p>
对“挂起”的资源U程的控制具有很大的动态性,要对其进行调整ƈ不是一件简单的事。其效果是基于对以下3个参数的权衡Q? Ҏ件的研究和测试得出的l论是,参数调整取决于特定的门户实现Q但h共同的趋ѝ?a target="_blank">?中的图表展示了用于调整的准则。在试中,比率被设为R = 95%QTUR?5QmsQ,TRC被设?00QmsQ。通常Q可靠的比率?0%或更高?
此图表显C“挂起”的API调用敎ͼ在控件中计数Q是如何取决于调用执行时间的。图表中的点代表风险控制周期之间挂v的用戯求的最大数量,卛_针对l定调用执行旉而进行的一pd试中的riskCounterValue最大倹{请CQ在实施决策规则Ӟ一些用戯求被拒绝Q而“挂起”的资源U程数量不会增加?/p>
?中的水^U线标记门户中所允许的最大ƈ发用h量。控件的目的是将最大riskCounterValue严格保持在红U以下。图表中的点接q红U,p可能辑ֈ或超出riskThreshold?/p>
我们可以看到Q控制的行ؓ不明显。对于某些调用执行时间|?250ms?500msQ,控g生成用户hQ“挂起”的资源U程数量接近q超出门户允许的q发用户最大倹{在此间隔期_控制在给定条件下是无效的。同Ӟ控制在从100ms?000ms和从3500ms?000ms?个间隔中是有效的Q具有特定riskThreshold的决{规则可靠地保护门户不受“挂起”的API调用的媄响,q保留够的q发hU程以服务其他用戯求?/p>
此图表还昄较小的riskThreshold可提供较好的保护。但是,如果一个资源的riskThreshold讄得过低,资源可能仅仅׃|络延迟的轻微L动就在大多数用户会话中不可用。这是另一个主题了Q^衡和调整?/p>
q套关于“挂起”的资源调用的运行时控制的推荐解x案允讔R户隔L问题的资源,q用余下的资源l箋q行Q从而最大程度地减小Ҏ能的媄响。此解决Ҏ的效果取决于以下几个调整参数Q请求频率和风险控制周期频率的比率、风险阀值的值和预期的调用执行时间?/p>
q种情况下的调整不是一件容易的事——它需要密集的试。此外,本文中给出的数字是特定于我的试门户的,即您发C相关性,在您的门户上q行的测试中使用的应该是其他倹{另一斚wQ如果某U程度的性能降低是可以接受的Q则推荐在每个API调用的范围内执行风险控制周期Q以显著化解x案参数的调整?/p>
原文出处:
http://wldj.sys-con.com/read/185309.htm
内嵌?LDAPQ丢q理密码(WLS 7.0 ?WLS 8.1Q?/b> 理密码已丢失?/p> 解决ҎQ?/span> 内嵌?LDAPQ更改管理密码后被管服务器无法启动(WLS 7.0 ?WLS 8.1Q?/b> LDAP 服务器:WebLogic 理用户启动服务器时被拒l?/b> 解决ҎQ?/span> 解决ҎQ?/span> 更改 config.xml 中的“credential”以使用正确的密码?br /> WebLogic 作ؓ NT 服务Q错?1058 解决ҎQ?/span> Microsoft 知识库文?175155Q位?http://support.microsoft.com/kb/q175155/Q?/a>也介l了以上步骤?br /> WebLogic 作ؓ NT 服务Q错?1067 解决ҎQ?/span> 反馈 L我们提供您的意见Q说明此支持诊断模式“启?WLS 时出错?/strong>一文是否有所帮助、您需要的M解释Q以及对支持诊断模式的新主题的Q何要求?br /> 免责声明Q?/strong> 依据 BEA 与您{v的维护和支持协议条款QBEA Systems, Inc. 在本|站上提供技术技巧和补丁供您使用。虽然您可以这些信息和代码与您获得 BEA 授权的Y件一起用,?BEA q不Ҏ提供的技术技巧和补丁做Q何Ş式的担保Q无论是明确的还是隐含的?/p> 本文中引用的Q何商标是其各自所有者的财。有兛_整的商标信息Q请参考您的品手册?/p>
旉Q?006-05-26
作者:Michael Poulin
览ơ数Q?
124
本文关键字:WebLogic Portal, thread hanging, Workaround, U程挂v,
业务d
解决Ҏ设计
java.lang.System.currentTimeMillis()
long apiExecutionTime = ...;// property
long timeToComplete =
java.lang.System.currentTimeMillis() + apiExecutionTim
分析和调?/h3>
l束?/h3>
参考资?/h3>
作者简?/span>
Michael Poulin 是一位技术架构师Q现供职于华街一家大型公司。他是Sun认证的Java技术架构师。过Lq来Q他专攻分布式计、应用程序安全性和SOA?/td>
]]>
启动 WLS 时的w䆾验证错误
问题描述
WebLogic Server 不启动,q抛Z理密码、管理授权或 LDAP 有关的错误?br />The WebLogic Server did not start up properly.
Reason: weblogic.security.SecurityInitializationException: Authentication denied: Boot identity not valid; 该错误表明启动n份文?(boot.properties) 中的用户名和/或密码无效。可能是在创建启动n份文件后更改q启动n份。请使用正确的用户名和密码编辑和更新启动w䆾文g。首ơ用更新后的启动n份文件启动服务器时会这些新值加密?b>
解决ҎQ?br />以明文Ş式更?boot.properties 中的参数倹{?span style="FONT-FAMILY: courier new">boot.properties”通常位于域根目录中?br />例如Q?br />username=weblogic
password=weblogic812讄属性后Q重新启动服务器?br />q回首
׃没有覆盖用户 ID 密码的方法,因此必须创徏新的理员用?IDQ然后用它来启?WebLogic。以下是丢失理员密码后恢复理用户的步骤?br />假定创徏了一个用?ID“adminuser”,密码是“weblogic?
q回首
WebLogic Server 无法正常启动?br />抛出了异常:weblogic.management.configuration.ConfigurationException: [Configuration Management:150021]The admin
server failed to authenticate the identity of the user weblogic starting the managed server. The reason for the error is .<13 juil. 2004 16 h 42 CEST> <Debug> <SecurityDebug> <000000> <new LDAP connection to host localhost port 389 use local connection is false>
<13 juil. 2004 16 h 42 CEST> <Debug> <SecurityDebug> <000000> <created new LDAP connection LDAPConnection { ldapVersion:2 bindDN:""}>
<13 juil. 2004 16 h 42 CEST> <Debug> <SecurityDebug> <000000> <connection failed netscape.ldap.LDAPException: failed to connect to server ldap://localhost:389 (91)>解决ҎQ?
q回首
LDAP 服务器:q接错误Q错?49Q?br /><30 juin 2004 15 h 07 CEST> <Debug> <SecurityDebug> <000000> <new LDAP connection to host localhost port 389 use local connection is false>
<30 juin 2004 15 h 07 CEST> <Debug> <SecurityDebug> <000000> <created new LDAP connection LDAPConnection { ldapVersion:2 bindDN:""}>
<30 juin 2004 15 h 07 CEST> <Debug> <SecurityDebug> <000000> <connection failed netscape.ldap.LDAPException: error result (49)>解决ҎQ?br />提供的用于连?LDAP 服务器的用户 ID 无效?br />?config.xml q证以下参敎ͼ
Credential="weblogic"
Principal="uid=admin, ou=Administrators, ou=TopologyManagement, o=NetscapeRoot" <weblogic.security.providers.authentication.IPlanetAuthenticator
ControlFlag="SUFFICIENT"
Credential="weblogic"
GroupBaseDN="ou=groups"
Name="Security:Name=RealmIPlanetAuthenticator"
Principal="uid=admin, ou=Administrators, ou=TopologyManagement, o=NetscapeRoot"
Realm="Security:Name=Realm" UserBaseDN="dc=bea,dc=com"/>要解册问题Q请使用以下Ҏ之一更正 uid 或密?(Credential)Q然后重新启?WebLogic Server?span style="COLOR: rgb(153,51,153)">
q回首
WebLogic Server 理用户在启动服务器时可能遭到拒l。三个可能的成因如下Q?br />
1. ?LDAP q接时发生错?32<30 juin 2004 15 h 10 CEST> <Debug> <SecurityDebug> <000000> <connection succeeded>
<30 juin 2004 15 h 10 CEST> <Debug> <SecurityDebug> <000000> <DN for user weblogic: uid=weblogic,dc=bea,dc=com>
<30 juin 2004 15 h 10 CEST> <Debug> <SecurityDebug> <000000> <search("ou=groups", "(&(uniquemember=uid=weblogic,dc=bea,d
c=com)(objectclass=groupofuniquenames))", base DN & below)>
<30 juin 2004 15 h 10 CEST> <Debug> <SecurityDebug> <000000> <returnConnection conn:LDAPConnection {ldap://localhost:389
ldapVersion:3 bindDN:"uid=admin, ou=Administrators, ou=TopologyManagement, o=NetscapeRoot"}>
netscape.ldap.LDAPException: error result (32)
?LDAP 中未扑ֈ WebLogic 应在?LDAP q接时用的 LDAP 用户Q本例中为“weblogic”)Q因此必d用户?/p>关于创徏用户 ID 的方法,请参?LDAP 服务器文?br />
2. ?LDAP q接时n份验证失?/span><30 juin 2004 15 h 29 CEST> <Debug> <SecurityDebug> <000000> <returnConnection conn:LDAPConnection {ldap://localhost:389
ldapVersion:3 bindDN:"uid=admin, ou=Administrators, ou=TopologyManagement, o=NetscapeRoot"}>
javax.security.auth.login.FailedLoginException: [Security:090302]Authentication Failed: User admin denied
config.xml. 中的理用户密码错误?br />
Credential="weblogic"
3. 不允许用?XXXXXX 启动服务?/font><30 juin 2004 16 h 40 CEST> <Critical> <Security> <BEA-090404> <User weblogic is not permitted to boot the server;
The server policy may have changed in such a way that the user is no longer able to boot the server.
Reboot the server with the administrative user account or contact the system administrator to update the server policy definitions.>解决ҎQ?/span>
LDAP 理员组中没有与 LDAP q接所使用?LDAP 用户“weblogic”?br />此用户d到管理员l。有兌明,请参?LDAP 文档?br />
q回首
WLS 无法?Windows 2000 上作?Windows NT 服务启动Qƈ产生以下错误Q?br />“Could not start the <Service Name> service on \\<Computer Name>.Error 1058:The specified service is disabled and cannot be started.?/span>
服务启用 Windows g配置文g?br />以下是在 Windows 2000 上启用的操作步骤Q?br />
?WLS 域作?NT 服务安装后,启动它时发生“Microsoft Error: 1067”?br />此错误提供的只是一般性信息,未提供Q何与真正问题有关的线索。下面的情况可能会导致此?067”错误及 WebLogic Server 无法作ؓ服务正常启动?br />CONFIGURATIONQ安装在 Windows NT 上的 WLS 6.x?.x?br />
清理pȝ PATH 环境变量Q之不包含I格?br />
q回首
File Realm 中的pȝ用户密码 (WLS 6.1)
WebLogic Server 不能正常启动?br />Exception raised:
java.lang.SecurityException: Authentication for user system denied
at weblogic.security.SecurityService.initializeSuid(SecurityService.java:410)
at weblogic.security.SecurityService.initialize(SecurityService.java:120)
at weblogic.t3.srvr.T3Srvr.initialize(T3Srvr.java:421)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:213)
at weblogic.Server.main(Server.java:35)
Reason: Fatal initialization exception
File Realm 中的pȝ用户密码׃某种原因在客户域中损坏,因?WebLogic Server 无法启动?br />
备注Q由于加?解密需要由以上文g共同完成Q因此两个文仉必须复制Q才能加密/解密正常q行?br />q回首
如何讄调试标志
讄调试标志有助于解册?LDAP 问题。编?config.xml 文gq添加以下属性:
StdoutDebugEnabled="true" StdoutSeverityLevel="64"
<ServerDebug DebugSecurityAdjudicator="true" DebugSecurityAtn="true"
DebugSecurityAtz="true" DebugSecurityRoleMap="true" Name="myserver"/>
如下面所C: <Server ListenAddress="" ListenPort="6151" Name="myserver"
NativeIOEnabled="true" ReliableDeliveryPolicy="RMDefaultPolicy"
ServerVersion="8.1.2.0" StdoutDebugEnabled="true" StdoutSeverityLevel="64">
<SSL Enabled="false" HostnameVerificationIgnored="false"
IdentityAndTrustLocations="KeyStores" Name="myserver"/>
<ServerDebug DebugSecurityAdjudicator="true"
DebugSecurityAtn="true" DebugSecurityAtz="true"
DebugSecurityRoleMap="true" Name="myserver"/>
</Server>
<ServerDebug DebugSecurityAdjudicator="true" DebugSecurityAtn="true"
DebugSecurityAtz="true" DebugSecurityRoleMap="true" Name="myserver"/>CR076945 (English) WLS 7.0 - ׃ LDAP 文g可能已损坏而无法启?WLS?br />
此外Q您可以定期查看所?WLS 版本的“Release Notes”,了解 Service Pack 中的“Known Issues”或“Resolved Issues”的详细信息及浏览与w䆾验证有关的问题。?方便赯Q下面提供了q些发行说明的链接:
使用搜烦功能也可以搜索到“Release Notes”,q可以搜索到其它支持解决办法及与 CR 有关的信息,?a href="#Need_Further_Help?">需要更多帮助?中所提到的内宏V如果客L订了技术支持合同,则可以登?http://support.bea.com/Q登录后会看Cؓ Solutions ?Bug Central 提供?Browse portletQ可在其中按产品版本览最新提供的 CR?/span>
q回首需要更多帮助?
如果您已l理解这个模式,但仍需要更多帮助,您可以:
如果q还不能解决您的问题Qƈ且您拥有有效的技术支持合同,您可以通过d以下|站来打开支持案例Q?span style="FONT-FAMILY: 'Times New Roman'">http://support.bea.com/?/td>
]]>
[web@www web]$ rm boot.properties
[web@www web]$ rm -Rf myserver
[web@www web]$ rm config.xml
[web@www web]$ rm config.xml.booted
[web@www web]$ ./startWLS.sh
q样Q一步一步按提示做就可以重新Z个域?br />
我是weblogic console密码忘了才这样做的,不知道有没有好的办法恢复密码Q?img src ="http://www.tkk7.com/xine/aggbug/49696.html" width = "1" height = "1" />
]]>
killall java
cd /home/web/bea/weblogic81/server/bin
./startWLS.sh > /home/web/web.log &
cd /home/web/
q是我restartWLS的脚本,攑֜web的home下面
我在rc.local里面加了一?
su - web -c restartWLS
q样可以实现linux 开动启动weblogic?img src ="http://www.tkk7.com/xine/aggbug/49694.html" width = "1" height = "1" />
]]>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 7.0//EN" "<weblogic-web-app>
<jsp-descriptor>
<jsp-param>
<param-name>compileFlags</param-name>
<param-value>-g</param-value>
</jsp-param>
<jsp-param>
<param-name>keepgenerated</param-name>
<param-value>true</param-value>
</jsp-param>
<jsp-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</jsp-param>
<jsp-param>
<param-name>workingDir</param-name>
<param-value>/home/webdev/barcelona/WEB-INF/workingdir/</param-value>
</jsp-param>
</jsp-descriptor>
<charset-params>
<input-charset>
<resource-path>/*</resource-path>
<java-charset-name>GBK</java-charset-name>
</input-charset>
</charset-params>
<context-root></context-root>
</weblogic-web-app>
----------------------------------8.1sp2 weblogic.xml------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "<weblogic-web-app>
<jsp-descriptor>
<jsp-param>
<param-name>compileFlags</param-name>
<param-value>-g</param-value>
</jsp-param>
<jsp-param>
<param-name>keepgenerated</param-name>
<param-value>true</param-value>
</jsp-param>
<jsp-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</jsp-param>
<jsp-param>
<param-name>workingDir</param-name>
<param-value>/home/webdev/html/guanli/WEB-INF/workingdir/</param-value>
</jsp-param>
</jsp-descriptor>
<charset-params>
<input-charset>
<resource-path>/*</resource-path>
<java-charset-name>GBK</java-charset-name>
</input-charset>
</charset-params>
<context-root>guanli</context-root>
</weblogic-web-app>
----------------------------------------------web.xml--------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "<web-app>
<display-name>bbs_fcb</display-name>
<welcome-file-list>
<welcome-file>bbs.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<error-page>
<error-code>404</error-code>
<location>/404.html</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/500.html</location>
</error-page>
</web-app>