суббота, 2 марта 2013 г.

Деплой Webcenter Portal Framework Application через WLST

Встала задача организовать автоматизированный деплой webcenter на разработческую площадку. В качестве билд-сервера у нас используется TeamCity. В качестве самого сборщика ant т.к. ничего другого Oracle нам не предлагает. Скрипт сборки - автогенерированный и создается через JDeveloper: File - New - General - Ant - Build file from project. Сгенерированный ant для использования на блид-сервере ( да и на машинах других разработчиков) не очень пригоден и требует доработки напильником. Все прямые пути к либам файловой системе заменены на зависящие от введенного ant property oracle.middleware.home. Пример:
  
    
      
    

    
      
    
  

  
    
    Windows ojdeploy ${oracle.jdeveloper.ojdeploy.path}
    
    Windows WLST ${oracle.jdeveloper.wlst.path}
  

  
    
    Unix ojdeploy ${oracle.jdeveloper.ojdeploy.path}
    
    Unix WLST ${oracle.jdeveloper.wlst.path}
  

  
    
      
      
      
      
      
      
      
      
      
      
      
    
  
Так же забыл отметить что-бы ojdeploy и все зависимоти были доступны на билд-сервере туда необходимо установить JDeveloper.
Далее рассмотрим сам скрипт деплоя на python:
adminUser=sys.argv[6]
adminPassword=sys.argv[7]
adminUrl=sys.argv[8]
earPath=sys.argv[1]
repositoryName=sys.argv[2]
partitionName=sys.argv[3]
repositoryType=sys.argv[4]
jndiName=sys.argv[5]
applicationName=sys.argv[9]
targetServers=sys.argv[10]

connect(adminUser,adminPassword,adminUrl)
domainRuntime()


def deployAll():
     archive = getMDSArchiveConfig(fromLocation=earPath)
     archive.setAppMetadataRepository(repository=repositoryName,partition=partitionName,type=repositoryType,jndi=jndiName,path=jndiName)
     archive.save()
     deploy(applicationName, earPath, targets=targetServers,remote='true',upload='true',usenonexclusivelock='true')


# Deploy script init
try:
 deployAll()
except:
    print "Unexpected error: ", sys.exc_info()[0]
    dumpStack()
    raise

 Далее пример build.properties для инсталяции Webcenter и integrated Weblogic Server

adminUserName=weblogic
adminPassword=weblogic1
adminUrl=t3://host:7001
repository=mds-CustomPortalDS
partition=custom.webcenter.application
repositoryType=DB
jndi=jdbc/mds/CustomPortalDS
targetServers=WC_CustomPortal

adminUserName=weblogic
adminPassword=weblogic1
adminUrl=t3://localhost:7101
repository=mds-integServerRepos
partition=custom.webcenter.application
repositoryType=File
jndi=/C:/Users/solovyev.vladimir/AppData/Roaming/JDeveloper/system11.1.1.6.38.62.29/DefaultDomain/webcenter/mds-integServerRepos
targetServers=DefaultServer
Из нюансов, для файловой реализации MDS необходимо указывать допольнительную переменную jndi.
Во общем-то все спасибо за внимание!

суббота, 9 февраля 2013 г.

Успешно сдал экзамен Oracle Application Development Framework 11g Essentials

Получил возможность сдать экзамен абсолютно бесплатно в рамках проводимого Oracle Test Fest! Экзамен проходил в академии "ФОРС". Так случилось, что дата проведения экзамена совпала с жутким дедлайном. Пришлось сдавать без какой-либо подготовки...  Экзамен был в виде теста из 70 вопросов и длительностью полтора часа. Постановка некоторых вопросов была довольно объемной, поэтому перевод и осознание вопроса отнимали значительное время. Так как в этот период активно работал с ADF сомнений, что не сдам не было. Однако в течении экзамен осознал, что был излишне самоуверен. Сертификат в материализованном виде, благодоря почте России, мною получен не был. Посылал реквест на переотправку, в ответ получил только ссылку на PDF с электронной версией сертификата.




пятница, 8 февраля 2013 г.

Ошибка ADFv: Could not find selected item matching value


При запуске страницы на поле с ADF BC List of Values возникает ошибка

<FacesCtrlListBinding> <getInputValue> ADFv: Could not find selected item matching value -5353520000000000000000000000 of type: oracle.jbo.domain.Number in the list-of-values.

вместо проставления выбранного значения из списка. Если данные действительно консистентны. То необходимо мапинги полей во View Object где используется LOV. Типы полей должны совпадать.