如何在 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 和其他属性。