|    
						Какой рейтинг вас больше интересует?
						
						 | 
						Главная /  Каталог блоговCтраница блогера Записки Oracle-ойда/Записи в блоге | 
|  | 
										Записки Oracle-ойда Голосов: 1 Адрес блога: http://stan1slav.blogspot.com/ Добавлен: 2011-07-16 14:20:30 блограйдером stan1slav Принадлежит блограйдеру stan1slav | 
Список необходимых патчей для Oracle SOA & BPM Suite 11g PS6 (11.1.1.7)
2014-09-29 13:25:00 (читать в оригинале)Перечень патчей которые необходимо развернуть для Oracle SOA & BPM Suite 11g PS6 (11.1.1.7):
- Patch 17294404: XSDCOMPLEXTYPE.GETCHILDELEMENTS() IS NOT THREAD SAFE
- Patch 18325165: MERGE REQUEST ON TOP OF 11.1.1.7.0 FOR BUGS 16319620 16487002
- Patch 18609527: SOA BUNDLE PATCH 11.1.1.7.4
- Patch 18366461: NULLPOINTEREXCEPTION AT WEBSERVICEEXTERNALBINDINGCOMPONENT.GETINVOCATIONMETADATA
Скачать эти патчи можно c support.oracle.com.
P.S. список патчей будет дополняться (при необходимости).
ADF: Ошибка InvalidOwnerException JBO-25030 при одновременном создании master- и detail-записей
2014-05-13 21:00:00 (читать в оригинале)Ошибка:
При создании Master- и Detail-записи последовательно через ADF Data Binding, например как в следующем коде:
  public String createMasterDetail() {
  
   BindingContainer bindings = getBindings();  
   OperationBinding operationBinding =  
   bindings.getOperationBinding("CreateInsertMaster");  
   Object result = operationBinding.execute();  
   OperationBinding operationBinding1 =  
   bindings.getOperationBinding("CreateInsertDetail");  
   result = operationBinding1.execute();  
   return null;  
  }  
При создании новой строки через ADF Data Binding её статус будет STATUS_INITIALIZED. А когда Detail-запись пытается найти Master-запись в кеше (у которой статус STATUS_INITIALIZED), то будет брошено исключение InvalidOwnerException.
Вариант решения:
- Установить флаг Сascade Update Key Attributes в ассоциации между Master- и Detail-сущностями;
- Сгенерировать View Row Class (...ViewRowImpl) для Master-сущности и переопределить в нём следующий метод: @Override
 public void setNewRowState(byte b) {
 if (b!=Row.STATUS_INITIALIZED || getNewRowState()!=Row.STATUS_NEW){
 super.setNewRowState(b);
 }
 }
SoapUI: подстановка вычисляемых значений с помощью вставок на Groovy
2014-01-13 12:11:00 (читать в оригинале)Целей функционального тестирования композитных приложений иногда используются заглушки и/или SoapUI,EM и прочие средства. Но как правило необходимо отправлять сообщения с отличающимися данными, например: документ на согласование с различными идентификатором и текущей датой отправки. Можно каждый раз перед отправкой менять значения вручную, но удобнее например для числовых идентификаторов использовать случайное число из определённого диапазона, а для даты подставлять например текущую дату. В SoapUI есть поддержка Groovy и подобное поведение делается очень легко (выделено красным):

- числового значения в диапазоне от 0 до 10000 нужно подставить:${=(int)(Math.random()*10000)}
- текущей даты нужно подставить:${=new Date().format(‘yyyy-MM-dd’)}
Планировщик заданий в Weblogic Server
2014-01-06 21:02:00 (читать в оригинале)Рассмотрим реализацию на примере создания простейшего приложения (без использования внешних библиотек) с одним заданием, которое выполняется каждые 5 секунд и пишет в лог время выполнения.
- Открываем Oracle JDeveloper и создаём новое приложение (с именем SampleScheduler):
- Затем добавляем в проект необходимые библиотеки.
- Создаём новый класс задания (с именем HelloWorldJob): package com.blogspot.stan1slav.sample.jobs;
 
 import commonj.timers.CancelTimerListener;
 import commonj.timers.Timer;
 import commonj.timers.TimerListener;
 
 import java.io.Serializable;
 
 import java.util.Date;
 
 public class HelloWorldJob implements Serializable, TimerListener,
 CancelTimerListener {
 private Date timerDate = null;
 
 public HelloWorldJob() {
 super();
 }
 
 public void timerExpired(Timer timer) {
 timerDate = new Date(timer.getScheduledExecutionTime());
 System.out.println("HelloWorldJob timer expired called on " +
 timerDate);
 }
 
 public void timerCancel(Timer timer) {
 timerDate = new Date(timer.getScheduledExecutionTime());
 System.out.println("HelloWorldJob timer cancelled called on " +
 timerDate);
 }
 }
- Создаём сервлет для старта/остановки задания, а так же автозапуска: package com.blogspot.stan1slav.sample;
 
 import com.blogspot.stan1slav.sample.jobs.HelloWorldJob;
 
 import commonj.timers.Timer;
 import commonj.timers.TimerManager;
 
 import java.io.IOException;
 import java.io.PrintWriter;
 
 import java.util.Date;
 
 import javax.naming.InitialContext;
 
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 public class JobsServlet extends HttpServlet {
 private Timer helloWorldJobTimer = null;
 private TimerManager tm = null;
 
 public void init(ServletConfig config) throws ServletException {
 super.init(config);
 System.out.println("InitJobsServlet is initialized ");
 
 try {
 InitialContext ic = new InitialContext();
 tm = (TimerManager)ic.lookup("java:comp/env/tm/TimerManager");
 helloWorldJobTimer =
 tm.schedule(new HelloWorldJob(), new Date(), 5000); //5 seconds
 } catch (Exception ne) {
 ne.printStackTrace();
 }
 }
 
 public void service(HttpServletRequest req,
 HttpServletResponse res) throws IOException {
 res.setContentType("text/html");
 PrintWriter out = res.getWriter();
 out.println("<h4>JobsServlet is working!</h4>");
 String cmd = req.getParameter("cmd");
 if (cmd != null && cmd.equals("cancel") && helloWorldJobTimer != null) {
 helloWorldJobTimer.cancel();
 helloWorldJobTimer = null;
 }
 if (cmd != null && cmd.equals("start") && helloWorldJobTimer == null) {
 helloWorldJobTimer =
 tm.schedule(new HelloWorldJob(), new Date(), 5000);
 }
 if (helloWorldJobTimer != null) {
 out.println("<h6>HelloWorldJob started</h6>");
 } else {
 out.println("<h6>HelloWorldJob calceled</h6>");
 }
 }
 }
- В web.xml прописать ссылку на ресурс (т.е. TimerManager): <?xml version = '1.0' encoding = 'UTF-8'?>
 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 version="2.5" xmlns="http://java.sun.com/xml/ns/javaee">
 <servlet>
 <servlet-name>JobsServlet</servlet-name>
 <servlet-class>com.blogspot.stan1slav.sample.JobsServlet</servlet-class>
 <load-on-startup>100</load-on-startup>
 </servlet>
 <servlet-mapping>
 <servlet-name>JobsServlet</servlet-name>
 <url-pattern>/jobsservlet</url-pattern>
 </servlet-mapping>
 <resource-ref>
 <res-ref-name>tm/TimerManager</res-ref-name>
 <res-type>commonj.timers.TimerManager</res-type>
 <res-auth>Container</res-auth>
 <res-sharing-scope>Unshareable</res-sharing-scope>
 </resource-ref>
 </web-app>
- Деплоим на сервер (как WAR-архив) и проверяем работоспособность
- Задание выполняется после деплоя:
- С использованием сервлета остановим выполнение задания (?cmd=cancel):
- В логе появилась запись об остановке (отмене) задания:
- С использованием сервлета стартуем снова задание (?cmd=start):
- В логе появились записи о выполнении задания:
- JavaDoc-и;
- Timer and Work Manager API (CommonJ) Programmer's Guide for Oracle WebLogic Server;
- архив приложения описанного в данной статье.
Oracle SOA: управление композитами через WLST
2013-11-08 21:00:00 (читать в оригинале)Все команды выполняются из wlst.cmd или wlst.sh находящегося в SOA_HOME, у меня например это:
 C:\Apps\Oracle\Weblogic\10.3.6\Oracle_SOA1\common\bin\wlst.cmd  
- Просмотр развёрнутых композитов и их статусов:
 где weblogic - логин административного пользователя;welcome1 - пароль административного пользователя;bpm-dev.mycompany.com - хост SOA-сервера;8001 - порт SOA-сервера.wls:/offline>
 sca_listDeployedComposites('bpm-dev.mycompany.com',
 '8001',
 'weblogic',
 'welcome1')
 Пример результата:Following 4 composites are currently deployed to the platform:
 1. AsyncProc[1.0], partition=default, mode=active, state=on, isDefault=true, deployedTime=2013-07-25T11:26:03.309+04:00
 2. SimpleApproval[1.0], partition=default, mode=active, state=on, isDefault=true, deployedTime=2012-10-17T18:55:11.333+04:00
 3. SimpleHT[1.0], partition=default, mode=active, state=on, isDefault=true, deployedTime=2012-12-21T13:23:24.345+04:00
 4. AgreementApproversService[1.0], partition=prod, mode=active, state=on, isDefault=true, deployedTime=2013-02-22T17:51:30.971+04:00
- Старт композита:
 где AsyncProc - имя композита;1.0 - версия композита;default - раздел.wls:/offline>
 sca_startComposite('bpm-dev.mycompany.com',
 '8001',
 'weblogic',
 'welcome1',
 'AsyncProc',
 '1.0',
 partition='default')
- Стоп композита:wls:/offline>
 sca_stopComposite('bpm-dev.mycompany.com',
 '8001',
 'weblogic',
 'welcome1',
 'AsyncProc',
 '1.0',
 partition='default')
- Активация композита:wls:/offline>
 sca_activateComposite('bpm-dev.mycompany.com',
 '8001',
 'weblogic',
 'welcome1',
 'AsyncProc',
 '1.0',
 partition='default')
- Деактивация композита:wls:/offline>
 sca_retireComposite('bpm-dev.mycompany.com',
 '8001',
 'weblogic',
 'welcome1',
 'AsyncProc',
 '1.0',
 partition='default')


						Категория «Священники»
						
					
										Взлеты Топ 5
					|  | ||
| +4 | 68 | Позже,чем кажется | 
| +1 | 2 | священник Стефан Красовицкий | 
|  |  |  | 
|  |  |  | 
|  |  |  | 
Падения Топ 5
					
									
						Популярные за сутки
						
					
				Загрузка...
 
			BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.











 
						


