![]() ![]() ![]()
Какой рейтинг вас больше интересует?
|
Главная /
Каталог блогов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
![]() | ||
+211 |
226 |
antonesku |
+191 |
281 |
Zoxx.ru - Блог Металлиста |
+187 |
200 |
Follow_through |
+172 |
216 |
Тихо дышит катЁнка... |
+170 |
192 |
Wisemen |
Падения Топ 5
![]() | ||
-1 |
3 |
CAPTAIN |
-5 |
5 |
navesele |
-19 |
4 |
Painter-boy |
-24 |
44 |
Science Of Drink |
-25 |
11 |
Karina_Barbie |

Популярные за сутки
Загрузка...

BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.