2015-10-06 7 views
3

Сценарий - EAR устанавливается на сервере приложений Websphere и работает на более чем 30 JVM. Я хочу создать свойство только в одной JVM и хочу прочитать это в своем java-коде. Как создать свойство уровня JVM с помощью консоли WAS и прочитать его на Java.JVM-свойство в JAVA

+0

С 30 экземплярами я предлагаю вам изучить [Apache Zookeeper] (http://zookeeper.apache.org/). –

+1

Вы можете использовать JNDI вместо этого.Будет доступно более 30 JVM, создав его на уровне кластера ... – Nayeem

ответ

2

Создание пользовательских Собственость

В WAS (server1) или консоли администратора менеджера развертывания, перейдите к Серверы> ServerTypes> Серверы приложений WebSphere Cutom свойство и нажмите на JVM, на которой вы хотите создать

Сервер инфраструктуры (раздел)> Java и управление процессами> определение процесса

Дополнительные свойства (раздел)> Виртуальная машина Java> Cutom Свойства

Нажмите кнопку «Создать», чтобы добавить новое настраиваемое свойство.

enter image description here

Нажмите кнопку «Применить». Нажмите «Сохранить» непосредственно в основной конфигурации.

В автономной или единой среде вам необходимо остановить и перезагрузить сервер, чтобы изменения вступили в силу.

В кластерной среде, где вы определили свойство в диспетчере развертывания, вы, вероятно, захотите выполнить «полную повторную синхронизацию» и перезапустить кластер.


  • Доступ через Java код

После определения пользовательского свойства в сервере приложений WebSphere или узел, в котором вы определили свойство, вы можете получить доступ к его стоимости, как вы бы система собственности на Java, например:

String custProperty = System.getProperty("wbe.home"); 

Аналогичным образом можно использовать скриптлет на странице JSP, как это:

<% 
String custProperty = System.getProperty("wbe.home"); 
if (custProperty .equalsIgnoreCase("home")) { 
%> 

Если вы хотите автоматизировать ручную задачу добавления пользовательского свойства в 30 Вы можете использовать Jython сценарий JVM в. Вы можете изменить в соответствии с вашим требованием.

server = sys.argv[0] 
property = sys.argv[1] 
value = sys.argv[2] 
if (len(sys.argv) == 4): 
    descr = sys.argv[3] 
else : 
    descr = None 

# Convert a list of items separated by linefeeds into an array 
def getListArray(l): 
    return l.splitlines() 

# Obtain the "simple" server name 
def getServerName(s): 
    return AdminConfig.showAttribute(s, 'name') 

# Add common attr list to specified Server's JVM 
def addPropertiesToServer(s): 
    jvm = AdminConfig.list('JavaVirtualMachine', s) 

    # Look for existing property so we can replace it (by removing it first) 
    currentProps = getListArray(AdminConfig.list("Property", jvm)) 
    for prop in currentProps: 
     if property == AdminConfig.showAttribute(prop, "name"): 
      print "Removing existing property from Server %s" % getServerName(s) 
      AdminConfig.remove(prop) 

    # Store new property in 'systemProperties' object 
    print "Adding property to Server %s" % getServerName(s) 
    AdminConfig.modify(jvm,[['systemProperties',attr]]) 

# Construct list with new property name and value 
attr = [] 

if (descr is None): 
    print "Adding property %s=%s" % (property,value) 
    attr.append([['name',property],['value',value]]) 
else: 
    print "Adding property %s=%s,%s" % (property,value,descr) 
    attr.append([['name',property],['value',value],['description',descr]]) 

# Locate all Application Servers if server is 'all' 
if (server == 'all'): 
    servers = AdminConfig.list('Server') 
    for aServer in getListArray(servers): 
     type = AdminConfig.showAttribute(aServer,'serverType') 
     if (type == 'APPLICATION_SERVER'): 
      addPropertiesToServer(aServer) 

# TODO: support comma-separated list of servers 

else: 
    # Locate specified Server and its JVM 
    server = AdminConfig.getid('/Server:'+server+'/') 
    addPropertiesToServer(server) 

# Save changes 
if (AdminConfig.hasChanges()): 
    AdminConfig.save() 
+0

Если вам нужно применить это к 30 серверам в ND, вы должны его запустить. – Alasdair

0

Вы можете создать переменную WebSphere на уровне кластера, на котором ваши серверы от:

Environment --> WebSphere Variable --> <SelectYour_cluster_From_Dropdown> --> New 

Скажем, если имя переменной «MY.CUSTOM.PROPERTY», то вы можете используйте его в своем java-коде, написав следующий код:

String myCustomProperty = (String) System.getenv("MY.CUSTOM.PROPERTY"); 

Надеюсь, это сработает для вас.

Смежные вопросы