2016-03-22 1 views
0

Ищет вариант развертывания приложения (EAR/WAR/JAR) на веб-сервере через скрипт, где скрипт выполняется через основной класс Java.скрипт веб-сервера для развертывания приложения programetically

Я пытался добиться того же с помощью 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 

Любые предложения или какой-либо идеи, как ссылаться на Deploy/Undeploy задачи от Java?

+0

Вы можете использовать ant для выполнения этой задачи, используя ** wldeploy ** задачу. И вы можете выполнить эту задачу ant, используя * java *. – Sanjeev

+0

@Sanjeev любые примеры с использованием ANT для запуска и остановки сервера на основе условий и развертывания? – Rembo

+0

Другой подход заключается в использовании сценариев WLST – devwebcl

ответ

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

0

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

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

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

Вот шаги:

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

1.1. С консоли администратора WLS перейдите к GCDomain> Конфигурация> Общие> Дополнительно

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

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() 

удачи с ним !!