如何在 websphere 离线创建 workmanager
how to create workmanager in websphere offline
我使用 workmanager 实现了 websocket,它在 weblogic 中运行良好。
下面是我的web.xml和weblogic.xml
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>Archetype Created Web Application</display-name>
<resource-ref>
<res-ref-name>test_workmanager</res-ref-name>
<res-type>commonj.work.WorkManager</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</web-app>
weblogic.xml
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.7/weblogic-web-app.xsd">
<container-descriptor/>
<charset-params>
<input-charset>
<resource-path>/*</resource-path>
<java-charset-name>UTF-8</java-charset-name>
</input-charset>
</charset-params>
<work-manager>
<name>test_workmanager</name>
<ignore-stuck-threads>true</ignore-stuck-threads>
</work-manager>
<wl-dispatch-policy>test_workmanager</wl-dispatch-policy>
</weblogic-web-app>
当 weblogic 服务器启动并且用户登录时,它将创建 workmanger 并正常工作。
但我想知道在 websphere 中是否存在相同的行为。我知道我们可以在 websphere 管理控制台中创建 workmanager。但是是否可以离线创建它(比如创建 websphere.xml)以便一旦服务器启动它就会创建 workmanager 而不是去管理控制台创建它?
您可以使用 WebSphere Application Server wsadmin 工具离线创建工作管理器,有关使用 wsadmin 的更多信息,请从这个 IBM KnowledgeCenter topic 开始。为此,在服务器未 运行 时启动 wsadmin(或使用 -conntype NONE 参数),然后发出以下命令:
AdminConfig.create('WorkManagerInfo', AdminConfig.getid('/Cell:myCell/Node:myNode/Server:server1/WorkManagerProvider:WorkManagerProvider/'), '[[name "test_workmanager"] [workReqQFullAction "0"] [minThreads "0"] [category ""] [defTranClass ""] [daemonTranClass ""] [numAlarmThreads "2"] [workReqQSize "0"] [jndiName "wm/test_workmanager"] [maxThreads "2"] [serviceNames ""] [isGrowable "true"] [threadPriority "5"] [description "test workmanager"] [workTimeout "0"]]')
您需要在上面替换您的单元、节点和服务器名称的值。获取这些值的一种简单方法是使用管理控制台创建工作管理器,然后使用管理控制台命令帮助(在控制台右侧的“帮助”部分下)显示上次发出的命令。您可以复制该命令并更改名称、jndiName 和其他属性。
我使用 workmanager 实现了 websocket,它在 weblogic 中运行良好。
下面是我的web.xml和weblogic.xml
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>Archetype Created Web Application</display-name>
<resource-ref>
<res-ref-name>test_workmanager</res-ref-name>
<res-type>commonj.work.WorkManager</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</web-app>
weblogic.xml
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.7/weblogic-web-app.xsd">
<container-descriptor/>
<charset-params>
<input-charset>
<resource-path>/*</resource-path>
<java-charset-name>UTF-8</java-charset-name>
</input-charset>
</charset-params>
<work-manager>
<name>test_workmanager</name>
<ignore-stuck-threads>true</ignore-stuck-threads>
</work-manager>
<wl-dispatch-policy>test_workmanager</wl-dispatch-policy>
</weblogic-web-app>
当 weblogic 服务器启动并且用户登录时,它将创建 workmanger 并正常工作。
但我想知道在 websphere 中是否存在相同的行为。我知道我们可以在 websphere 管理控制台中创建 workmanager。但是是否可以离线创建它(比如创建 websphere.xml)以便一旦服务器启动它就会创建 workmanager 而不是去管理控制台创建它?
您可以使用 WebSphere Application Server wsadmin 工具离线创建工作管理器,有关使用 wsadmin 的更多信息,请从这个 IBM KnowledgeCenter topic 开始。为此,在服务器未 运行 时启动 wsadmin(或使用 -conntype NONE 参数),然后发出以下命令:
AdminConfig.create('WorkManagerInfo', AdminConfig.getid('/Cell:myCell/Node:myNode/Server:server1/WorkManagerProvider:WorkManagerProvider/'), '[[name "test_workmanager"] [workReqQFullAction "0"] [minThreads "0"] [category ""] [defTranClass ""] [daemonTranClass ""] [numAlarmThreads "2"] [workReqQSize "0"] [jndiName "wm/test_workmanager"] [maxThreads "2"] [serviceNames ""] [isGrowable "true"] [threadPriority "5"] [description "test workmanager"] [workTimeout "0"]]')
您需要在上面替换您的单元、节点和服务器名称的值。获取这些值的一种简单方法是使用管理控制台创建工作管理器,然后使用管理控制台命令帮助(在控制台右侧的“帮助”部分下)显示上次发出的命令。您可以复制该命令并更改名称、jndiName 和其他属性。