сценарий сервера weblogic для программного развертывания приложения

Я ищу возможность развернуть приложение (EAR / WAR / JAR) на сервере weblogic через скрипт, где скрипт выполняется через основной класс 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?


person Abhishek Nayak    schedule 22.03.2016    source источник
comment
Вы можете использовать ant для выполнения этой задачи с помощью задачи wldeploy. И вы также можете выполнить эту задачу с муравьями, используя java.   -  person Sanjeev    schedule 22.03.2016
comment
@Sanjeev какие-либо примеры использования ANT для запуска и остановки сервера в зависимости от условий и развертывания?   -  person Abhishek Nayak    schedule 22.03.2016
comment
другой подход - использовать скрипты WLST   -  person devwebcl    schedule 23.03.2016
comment
@Rembo См. docs.oracle.com/cd/E13222_01/ wls / docs100 / programming /   -  person Sanjeev    schedule 28.03.2016


Ответы (2)


Вы можете использовать задачу Weblogic Ant вместо написания приложения для этого. Это документы Weblogic Ant Task. Вы также можете следовать этому примеру.

Чтобы перезапустить weblogic, проверьте ссылку

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

и этот пост

person Ahmed Hashim    schedule 22.03.2016

Если WLS жалуется на то, что RuntimeMBeanServer не включен, просто включите его.

Предположения:

  1. Домен WLS находится в / oracle / app / oracle / gc_inst / user_projects / domains / GCDomain
  2. относится к WLS10.3.6, не тестировался в других версиях.

Вот шаги:

1) Включите платформу MBean Server, если он отключен:

1.1. В консоли администратора WLS перейдите в GCDomain> Configuration> General> Advanced.

1.2. Выберите Сервер платформы MBean включен, сохраните изменения и активируйте изменения.

1.3. Перезагрузите админ-сервер.

2) включить переменные env для GCDomain

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

3) включите RuntimeMBeanServerEnabled из WLST 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() 

Удачи !!

person Mario.Cadiz    schedule 04.08.2016