首页 > Websphere系列, 排错 > 启用安全性后无法停止WAS的解决方法

启用安全性后无法停止WAS的解决方法

2009年6月20日 hashei 发表评论 阅读评论

按照前一篇启用WebSphere管理安全性,你也许已经为WAS添加了密码来防止未授权的访问。但是当你想在Windows服务中重启、停止websphere时,你会发现无法停止,提示你“发生内部错误”。而在Systemout.log中,则有:

00000056 RoleBasedAuth A SECJ0305I: 对于 admin-authz 操作 Server,基于角色的授权检查失败:stop:java.lang.Boolean:java.lang.Integer。用户 UNAUTHENTICATED(唯一标识:unauthenticated)未被授予下列任何必需角色:administrator, operator。

这是由于was服务启动用户一般是“本地系统”或者“Administraotr”,而这两个用户都是非认证(unauthenticated)的。如果没有被添加为服务,或者在Unix/Linux环境下,停止服务器时就会提示你输入用户名和密码,或者运行命令时添加“-username 用户名 -password 密码”参数。

所以解决的方法很简单,只要更新一下WAS服务属性即可。在wasHome下的bin目录中,运行

wasservice -add 服务名(跟在IBMWAS61Service – 后的那部分)-serverName server1 -profilePath E:\IBM\WebSphere\AppServer\profiles\AppSrv02 -stopArgs “-username 用户名 -password 密码”

启动服务时不需要用户名密码,所以不需要添加-startArgs参数。得到提示:

Service already exists, updating parameters…

PS:to 香我宁的几个问题:

Q:在控制台的应用程序服务器–>serverxxx–>进程定义–>Java虚拟机页面勾选“详细类装入”(与-verbose:class作用一样),为何在SystemOut.log里没有类加载的日志输出?应该怎么看?

A:出现在了native_stderr.log里。

Q:没有更改日志级别详细信息,也没有类装入器查看器 = =跟踪规范是 *=all=disabled 这是啥意思?

A:在“故障诊断”中有“类装入器查看器”,在“日志和跟踪”里有“更改日志详细信息级别”,默认为“*=info”。其它级别为

WebSphere Application Server 缺省配置在缺省情况下支持 Level.INFO 和更高的 JUL 级别。应用服务器将从 Level.CONFIG 到 Level.SEVERE 的所有 JUL 级别作为日志事件级别对待,旨在供管理员使用。

表 3. 日志记录级别

日志记录级别

Level.SEVERE

Level.WARNING

Level.INFO

Level.CONFIG

应用服务器将从 Level.FINE 到 Level.FINEST 的级别作为跟踪级别对待(这些级别用于旨在帮助代码的作者进行调试的事件)。

权威支持: WebSphere Application Server 日志记录开发人员指南

“*=all=disabled ”说明对所有的记录器关闭跟踪,不过具体的要视WAS版本而定。

在 WebSphere Application Server V6 和更高版本中,使用了一种日志记录基础结构,即,扩展 Java 日志记录。这导致 WebSphere Application Server 中记录基础结构配置的以下更改:

  • Java 日志记录中定义的记录器等同于先前版本的 WebSphere Application Server 中引入的跟踪组件,并且是使用同一种方式配置的。两者都称为“组件”。
  • Java 日志记录级别和 WebSphere Application Server 级别都可以使用。以下是有效级别的完整列表,按严重性以升序排列:
  • 将组件的记录和跟踪级别设置为 all 将启用该组件的所有记录。将组件的记录和跟踪级别设置为 off 将禁用该组件的所有记录。
  • 只可以将一个组件配置为一个级别。但是,将组件配置为某种级别将使它可以在配置的级别和任何更高严重性级别执行记录。
  • 几个级别有同等名称:finest 等同于 debug;finer 等同于 entryExit;fine 等同于 event;severe 等同于error。

COMPONENT_NAME 是用跟踪服务记录基础结构注册的组件或组的名称。通常,WebSphere Application Server 组件使用标准 Java 类名(例如 com.ibm.servlet.engine.ServletEngine)注册。另外,您可以使用星号(*)通配符终止组件名称和表明多个类或包。例如,使用组件名 com.ibm.servlet.* 指定所有名称以 com.ibm.servlet 开头的组件。在组件名或组名末尾使用星号(*)作为通配符,以使记录字符串可应用于其名称以指定字符串开头的所有组件或组。例如,将“com.ibm.servlet.*”指定为组件名的记录字符串将应用到名称以 com.ibm.servlet 开头的所有组件。当使用星号(*)本身来代替组件名时,字符串指定的级别将应用到所有组件。

以下是在记录字符串中使用星号(*)的一些示例。注意,记录字符串中的星号(*)不需要在它前面具有句点(.)。句点(.)可用于记录字符串中的任何位置。

  • com.ibm.ejs.ras.*=all - 对于名称以“com.ibm.ejs.ras.”开头的所有记录器启用跟踪。如果有一个记录器名为“com.ibm.ejs.ras”,那么它将不会启用跟踪。
  • com.ibm.ejs.ras*=all - 对于名称以“com.ibm.ejs.ras”开头的所有记录器(例如,com.ibm.ejs.ras、com.ibm.ejs.raslogger 和 com.ibm.ejs.ras.ManagerAdmin)启用跟踪

注:

  • 在 WebSphere Application Server V5.1.1 和更低版本中,可以将 LEVEL 设置为“all=disabled”以禁用跟踪。从 V6.0 开始,此语法将导致 LEVEL=info;将禁用跟踪,但是将启用日志记录。
  • 在 WebSphere Application Server V6 和更高版本中,“info”是缺省级别。如果指定的组件不存在(未找到 *=xxx),那么始终意味着 *=info。跟踪字符串不匹配的任何组件会将其级别设置为 info。
  • 如果记录字符串不以指定所有组件级别的组件记录字符串(使用“*”代替组件名)开始,那么将添加一个设置所有组件为缺省级别的组件记录字符串。
  • 在 V6 和更高版本中,不需要使 STATE = enabled | disabled。但如果使用的话,它具有下列效果:
    • “enabled”将指定组件的记录设置为指定的级别
    • “disabled”将指定组件的记录设置为上述指定级别的上一个级别。下列示例说明禁用记录级别的影响:

更详细的看跟踪和日志记录配置

最后,如果可以的话,改下你的名字。

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.