【问题标题】:weblogic server script to deploy application programmatically以编程方式部署应用程序的 weblogic 服务器脚本
【发布时间】:2016-03-22 11:46:34
【问题描述】:

正在寻找通过脚本在 weblogic 服务器上部署应用程序(EAR/WAR/JAR)的选项,其中脚本通过 Java 主类执行。

我已经尝试通过 Java 来实现同样的目标:

private static final String wlUsername = "'weblogic'";
private static final String wlPassword = "'welcome1'";

private static void connect() {
        StringBuffer buffer = new StringBuffer();
        buffer.append("connect(");
        buffer.append(wlUsername);
        buffer.append(",");
        buffer.append(wlPassword);
        buffer.append(")");
        log.debug("connect: "+buffer.toString());
        interpreter.exec(buffer.toString());
}


private static void createServers() {
        StringBuffer buf = new StringBuffer();
        buf.append(startTransaction());
        buf.append("man1=create('msEmbedded1','Server')\n");
        buf.append("man2=create('msEmbedded2','Server')\n");
        buf.append("clus=create('clusterEmbedded','Cluster')\n");
        buf.append("man1.setListenPort(8001)\n");
        buf.append("man2.setListenPort(9001)\n");
        buf.append("man1.setCluster(clus)\n");
        buf.append("man2.setCluster(clus)\n");
        buf.append(endTransaction());
        buf.append("print ‘Script ran successfully ...’ \n");
        interpreter.exec(buf.toString());
}

private static String startTransaction() {
        StringBuffer buf = new StringBuffer();
        buf.append("edit()\n");
        buf.append("startEdit()\n");
        return buf.toString();
}

private static String endTransaction() {
        StringBuffer buf = new StringBuffer();
        buf.append("save()\n");
        buf.append("activate(block='true')\n");
        //buf.append("dumpStack()");
        return buf.toString();
}

public static void main(String[] args) {        
        connect();
        enableMbeanServer();
        createServers();
}

private static void enableMbeanServer(){
        StringBuffer buf = new StringBuffer();
        buf.append(startTransaction());
        buf.append("set('CompatibilityMBeanServerEnabled', 'true')");
        buf.append(endTransaction());
        buf.append("shutdown()");
        connect();
        buf.append("print ‘CompatabilityMBeanServer enabled successfully ...’ \n");
        interpreter.exec(buf.toString());
}

但是,最终会出现以下异常:

20:41:59.927 DEBUG [main][com.fedex.interfaces.wls.WLSTRunner] connect: connect('weblogic','welcome1')
Connecting to t3://localhost:7001 with userid weblogic ...

The CompatabilityMBeanServer is not initialized properly. 
This might happen if the CompatabilityMBeanServer is 
disabled via the JMXMBean.

To view the root cause exception use dumpStack()

WLST detected that the RuntimeMBeanServer is not enabled. This 
might happen if the RuntimeMBeanServer is disabled via the JMXMBean. 
Please ensure that this MBeanServer is enabled. Online WLST cannot 
function without this MBeanServer.
Exception in thread "main" Traceback (innermost last):
  File "<string>", line 1, in ?
  File "<iostream>", line 22, in connect
  File "<iostream>", line 648, in raiseWLSTException
WLSTException: Error occured while performing connect : "Cannot connect to WLST." 
Use dumpStack() to view the full stacktrace

对如何从 Java 调用部署/取消部署任务有任何建议或想法?

【问题讨论】:

  • 您可以使用 ant 使用 wldeploy 任务来执行此任务。您也可以使用 java 执行该 ant 任务。
  • @Sanjeev 有没有使用 ANT 根据条件启动和停止服务器并部署的示例?
  • 另一种方法是使用 WLST 脚本

标签: java scripting weblogic-10.x wlst


【解决方案1】:

您可以使用 Weblogic Ant 任务而不是编写应用程序来执行此操作。这是 Weblogic Ant 任务docs。你也可以关注这个example

要重新启动 weblogic,请检查 reference

<target name="start-server">
  <wlserver dir="./config" host="127.0.0.1" port="7001" action="start"/>
</target>

this post

【讨论】:

    【解决方案2】:

    如果 WLS 抱怨导致 RuntimeMBeanServer 未启用,只需启用它即可。

    假设:

    1. WLS 域位于 /oracle/app/oracle/gc_inst/user_projects/domains/GCDomain
    2. 适用于 WLS10.3.6,未在其他版本上测试。

    步骤如下:

    1) 如果禁用,则启用 Platform MBean Server:

    1.1。从 WLS 管理控制台,转到 GCDomain > 配置 > 常规 > 高级

    1.2。选择Platform MBean Server Enabled,保存更改并激活更改。

    1.3。重启管理服务器。

    2) 为 GCDomain 启用环境变量

    cd /oracle/app/oracle/gc_inst/user_projects/domains/GCDomain/bin
    source setDomainEnv.sh
    

    3) 从 WLST 启用 RuntimeMBeanServerEnabled java weblogic.WLST

    Initializing WebLogic Scripting Tool (WLST) ...
    Welcome to WebLogic Server Administration Scripting Shell
    Type help() for help on available commands
    wls:/offline> readDomain('/oracle/app/oracle/gc_inst/user_projects/domains/GCDomain')
    wls:/offline/GCDomain>cd('JMX/NO_NAME_0')
    wls:/offline/GCDomain/JMX/NO_NAME_0>set('PlatformMBeanServerUsed','true')
    wls:/offline/GCDomain/JMX/NO_NAME_0>set('PlatformMBeanServerEnabled','true')
    wls:/offline/GCDomain/JMX/NO_NAME_0>set('RuntimeMBeanServerEnabled', 'true')
    wls:/offline/GCDomain/JMX/NO_NAME_0>updateDomain()
    wls:/offline/GCDomain/JMX/NO_NAME_0>closeDomain()
    wls:/offline>exit() 
    

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多