OSB (ALSB) to implement a Resequencer? (EIP Pattern)
Hello *,
has somebody ever tried to implement using OSB (BEA ALSB) the Resequencer EIP Pattern (Hohpe, Woolf)?
http://www.enterpriseintegrationpatterns.com/Resequencer.html
Generally I wonder how the OSB product concept maps to the EIP Patterns. Are there some guidelines for scenarios like Splitter/Aggregator , Enricher/Filter, etc.?
my customer want's to implement at least the Resequence and Splitter. Any tips are very welcome here!!
grtx,
\thomas
Hi Thomas,
Depending on your exact requirement for your Resequencer you may be able to use the underlying WebLogic JMS Unit of Order to get this. Read more here:
http://download-llnw.oracle.com/docs/cd/E11035_01/wls100/jms/uoo.html
With regards the other patterns, OSB supports all the ones you mention:
Splitter/Aggregator - use the split/join functionality described here:
http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/splitjoin.html
Enricher - this can be achieved in a number of ways depending on where you are getting your enrichment data from. Service callouts allow you to invoke a service from within the proxy message flow, Java callouts allows you to implement Java code, and there is an XQuery function to allow you to read content from a database (note in the next release of OSB we will have support for the Oracle database adapter and so will have richer functionality here)
Filter - again this depends on the exact requirement but there are a number of options here including routing tables, if/then capability, operational branching, etc.
Hope that is useful.
Chris
Similar Messages
-
OSB (ALSB) Logging Redirect
Hi all,
how to redirect all the OSB(ALSB) related message logs ( Errors and transport exceptions included ) to a log4j custom file.
Now, given this discussion:
alsb logging
The way to go is, apparently, to
1. create filters at domain level by subsystem (or context_id or whatever else)
2. create a startup class to catch all log messages and to filter in only those ones you are interested in using, in your filter class, filters like " startsWith("ALSB)) " (equivalent of domain filter "Subsystem LIKE ALSB% " )
Now given all the following list of OSB (ALSB) related subsystems
http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/messages/indexa.html
*Is there a better approach then creating a filter class per each subsystem ?*
Regards,
Tony P.There doesn't seem to be 64bit version of OSB at all for Windows. [http://download.oracle.com/docs/cd/E13196_01/platform/suppconfigs/configs_al10gr3/osb10gr3/overview.html]
-
SOA suit 11g uses both ESB and OSB(ALSB)
Hi, I am newbie to SOA suit 11g. Can somebody please explain the use of ESB and OSB(ALSB) both in SOA 11g.In SOA 11g ESB is being used only for mediation.Even OSB(ALSB) has same capability.Then why both needs to be used?Can't we use one of these?
~Pradeephello Pradeep,
there is quite some literature on this hot topic - actually it's one of the most frequently asked question from people who are using OSB and Soa Suite.
if you google "OSB vs Mediator" you will find some useful links:
http://www.scribd.com/doc/23622536/Oracle-SOA-Suite-11g-Mediator-vs-Oracle-Service-Bus-OSB
SOA SUITE 11g - Mediator & OSB
http://oracle-fusion-blogs.com/oracle-fusion-osb-mediator/
and so on.... -
Support of exslt in OSB/ALSB
Hi,
Does OSB/ALSb support extended xslt functions i.e exslt(http://exslt.org/functions)?
When I tried to import/save an xslt having exslt functions, it gives an error
An error occurred compiling the XSLT template: javax.xml.transform.TransformerException: weblogic.apache.xml.utils.WrappedRuntimeException: Could not find variable with the name of val.
and the function is defined in xsl as :
<func:function name="ctvf:convertToNumber">
<xsl:param name="val"/>
<xsl:variable name="strVal" select="string($val)"/>
<xsl:choose>
<xsl:when test="$strVal = 'NaN'">
<func:result select="''"/>
</xsl:when>
<xsl:otherwise>
<func:result select="$strVal"/>
</xsl:otherwise>
</xsl:choose>
</func:function>
where namespaces in the header are as:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:func="http://exslt.org/functions"
Thanks,
RajeshHi all!
Thanx for the answers! I have tried in the past the /text() I tried it again and didn´t worked, some body knows how can I post some screen shots so you can see that I´m using the /text() and maybe with the screen shot you can detect something, also I´m loging the $body in the default branch(cause it is not detecting the value between the tags it goes directly to the Defaul Branch) you will se some differences in the XML since I simplified the XML to make the example and tested this simplified XML it in the TEST Tool in the console and had the same results that with the original evendough I put the /text() at the end
Here is the Body I loged in the default Branch:
<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<imp:iniciarCambio xmlns:imp="http://bea.com/albpm/MMME/ImpactarCambiosClienteBILLING">
<cambios xmlns:bea="http://bea.com/">
<bea:ListaDeCambios>
<!--1 or more repetitions:-->
<bea:Cambio>
<bea:campoNombre>Cambio1</bea:campoNombre>
<bea:valorAnterior>antes</bea:valorAnterior>
<bea:valorNuevo>despues</bea:valorNuevo>
</bea:Cambio>
</bea:ListaDeCambios>
<bea:companiaId>32</bea:companiaId>
<bea:companiaNombre>MMRedes</bea:companiaNombre>
<bea:companiaTipo>Servicio</bea:companiaTipo>
</cambios>
</imp:iniciarCambio>
</soapenv:Body>>
as you can see it is Servicio and it should have gone to one of the branches instead of the default but it didn´t
Can´t see what I´m doing wrong, but maybe some of you can.
Thanx in advanced!
Gerardo J -
OSB - ALSB / WLST / Security / add entry with WLST in Access Control
Hello,
I try to reproduce with WLST script the input from the consol to declare user on Access Control proxy (security).
sbconsol->$Proxy Service->Security->General Confiruration->Access Control->Transport Access Control->Add Conditions
* First implementation without success with the com.bea.wli.sb.security.management.configuration.ServiceSecurityConfigurationMBean : accessControlSecurity1()
* Second try with the service definition of the proxy service but cannot parse with Xpath accessControl Security2()
any idee ???
test case :
prerequisit
create an ALSB domain 10.3 (admin one with username='weblogic' password='weblogic' url='t3://localhost:7001') and create a proxy service on the default project
conf/setEnv.cmd
@CLS
@echo ON
@set BEA_HOME=D:\PRODUCT\MIDDLEWARE\SOA\OSB_10.3
@set WL_HOME=%BEA_HOME%\wlserver_10.3
@set OSB_HOME=%BEA_HOME%\osb_10.3
@set SCRIPTING_HOME=E:\PROJETS\RECURANT\EDF\linky\WLST\WORKING\Security
@set OSB_LIB=%OSB_HOME%/lib/sb-kernel-api.jar;%BEA_HOME%/modules/com.bea.alsb.statistics_1.0.1.0.jar;%OSB_HOME%/lib/sb-kernel-resources.jar;%OSB_HOME%/lib/sb-kernel-common.jar;%OSB_HOME%/lib/sb-kernel-impl.jar;%OSB_HOME%\lib\sb-security.jar;%OSB_HOME%/modules/com.bea.common.configfwk_1.3.0.0.jar;%BEA_HOME%/modules/com.bea.common.configfwk_1.2.0.0.jar;%BEA_HOME%/modules/com.bea.common.configfwk_1.2.1.0.jar;%OSB_HOME%/lib/modules/com.bea.alsb.resources.archive.jar;
@set TOOL_LIB=%SCRIPTING_HOME%\lib\log4j-1.2.15.jar;%SCRIPTING_HOME%\lib\jsch-0.1.43.jar;%SCRIPTING_HOME%\lib\db2jcc.jar
@set CLASSPATH=%OSB_LIB%;%TOOL_LIB%;%CLASSPATH%
@set CLASSPATH=%SCRIPTING_HOME%\lib\db2jcc.jar;%TOOL_LIB%;%CLASSPATH%
@set MODULE_LIB=%SCRIPTING_HOME%\lib
@call %WL_HOME%\server\bin\setWLSEnv.cmd > nul 2<&1
launch.cmd
@CLS
@echo OFF
@SETLOCAL
@call "conf\setEnv.cmd" > nul 2<&1
set PWD=%~dp0
%JAVA_HOME%\bin\java -Dmodule.lib=%MODULE_LIB% weblogic.WLST -skipWLSModuleScanning lib/security.py
lib/security.py
from com.bea.wli.monitoring import StatisticType
from java.util import HashMap
from java.util import HashSet
from java.util import ArrayList
from java.util import Collections
from java.io import FileInputStream
from java.io import FileOutputStream
from java.lang import String
from java.lang import Boolean
from com.bea.wli.sb.util import EnvValueTypes
from com.bea.wli.config.env import EnvValueQuery;
from com.bea.wli.config import Ref
from com.bea.wli.config.customization import Customization
from com.bea.wli.config.customization import EnvValueCustomization
from com.bea.wli.config.customization import FindAndReplaceCustomization
from com.bea.wli.sb.management.configuration import SessionManagementMBean
from com.bea.wli.sb.management.configuration import ALSBConfigurationMBean
from com.bea.wli.sb.management.query import BusinessServiceQuery
from com.bea.wli.sb.management.query import ProxyServiceQuery
from com.bea.wli.sb.management.configuration import ServiceConfigurationMBean
import os
# before, create an ALSB domain 10.3 with a proxy service in the default project and add an Acces Control Policy in the consol
# sbconsol->Project Explorer->default->${proxy service}->Security->Access Control->Create Session->Add Conditions->User->USR_1->Add
# when we try to modify the Acces Control Policy of the proxy service with the ServiceSecurityConfigurationMBean
def accessControlSecurity1( domain_name ):
# connection
print "\n\n\n***********************************************************************************************"
connect( 'weblogic', 'weblogic', 't3://localhost:7001')
domainRuntime()
# create a session
sessionName = String("SessionScript"+Long(System.currentTimeMillis()).toString())
SessionMBean = findService( SessionManagementMBean.NAME ,SessionManagementMBean.TYPE)
SessionMBean.createSession(sessionName)
# get the ServiceSecurityConfigurationMBean
serviceSecurityConfigurationMBean = findService(String("ServiceSecurityConfiguration.").concat(sessionName), "com.bea.wli.sb.security.management.configuration.ServiceSecurityConfigurationMBean")
# get the XACMLAuthorizer
working_directory=pwd()
serverConfig()
xacmlAuthorizer = cd('/SecurityConfiguration/%s/Realms/myrealm/Authorizers/XACMLAuthorizer' % domain_name )
cd(working_directory)
domainRuntime()
# get service ref
ConfigurationMBean = findService(String("ALSBConfiguration.").concat(sessionName), "com.bea.wli.sb.management.configuration.ALSBConfigurationMBean")
bsQuery = ProxyServiceQuery()
bsQuery.setPath("default/*")
refs = ConfigurationMBean.getRefs(bsQuery)
for ref in refs:
print 'ref=%s'%ref
# use the security Mbean to add : USER_A,USER_B,USER_C to the policy
policyHolder = serviceSecurityConfigurationMBean.newAccessControlPolicyHolderInstance(xacmlAuthorizer)
policyHolder.setPolicyExpression("Usr(USER_A,USER_B,USER_C)")
policyScope = serviceSecurityConfigurationMBean.newDefaultMessagePolicyScope(ref)
serviceSecurityConfigurationMBean.setAccessControlPolicy(policyScope,policyHolder)
# print the service definition
servConfMBean = findService( "%s.%s" % (ServiceConfigurationMBean.NAME, sessionName), ServiceConfigurationMBean.TYPE)
serviceDefinition = servConfMBean.getServiceDefinition(ref)
print serviceDefinition
# we can see the security entry in the service definition has follow
# <xml-fragment xmlns:ser="http://www.bea.com/wli/sb/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tran="http://www.bea.com/wli/sb/transports" xmlns:env="http://www.bea.com/wli/config/env">
# <ser:coreEntry isProxy="true" isEnabled="true" isAutoPublish="false">
# <ser:description/>
# <ser:security>
# <con:access-control-policies xmlns:con="http://www.bea.com/wli/sb/services/security/config">
# <con:message-level-policies>
# <con1:default-policy xsi:type="con:ProviderPolicyContainerType" xmlns:con="http://www.bea.com/wli/sb/security/accesscontrol/config" xmlns:con1="http://www.bea.com/wli/sb/services/security/config">
# <con:policy provider-id="XACMLAuthorizer">
# <con:policy-expression>Usr(USER_A,USER_B,USER_C)</con:policy-expression>
# </con:policy>
# </con1:default-policy>
# </con:message-level-policies>
# </con:access-control-policies>
# </ser:security>
# but when we commit
SessionMBean.activateSession(sessionName, "description for session activation")
# we got the following exception
# Unexpected error: com.bea.wli.config.session.SessionConflictException
# No stack trace available.
# Problem invoking WLST - Traceback (innermost last):
# File "E:\PROJETS\RECURANT\EDF\linky\WLST\WORKING\Security\lib\security.py", line 246, in ?
# File "E:\PROJETS\RECURANT\EDF\linky\WLST\WORKING\Security\lib\security.py", line 105, in accessControlSecurity1
# com.bea.wli.config.session.SessionConflictException: Conflicts for session SessionScript1363339726764
# [Non-Critical] Concurrent Modification Conflicts
# NONE
# [Critical] Resources with validation errors
# 1 - ProxyService test/PS_TEST_bis CannotCommit
# + CannotCommit [OSB Security:386836]Unnecessary proxy wide message access control policy found for service "test/PS_TEST_bis". Hint: The service is neither an active security
# intermediary nor has custom authentication enabled. ServiceDiagnosticLocation[SECURITY_TAB]:DiagnosticLocation:<con:message-level-policies xmlns:ser="http://www.bea.com/wli/sb/services" xml
# ns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tran="http://www.bea.com/wli/sb/transports" xmlns:env="http://www.bea.com/wli/config/env" xmlns:con="http://www.bea.com/wli/sb/services/security/config">
# <con1:default-policy xsi:type="con:ProviderPolicyContainerType" xmlns:con="http://www.bea.com/wli/sb/security/accesscontrol/config" xmlns:con1="http://www.bea.com/wli/sb/services/security/
# config">
# <con:policy provider-id="XACMLAuthorizer">
# <con:policy-expression>Usr(USER_A,USER_B,USER_C)</con:policy-expression>
# </con:policy>
# </con1:default-policy>
# </con:message-level-policies>
# [Info] Informational messages
# NONE
# at com.bea.wli.config.session.SessionManager.commitSessionUnlocked(SessionManager.java:358)
# at com.bea.wli.config.session.SessionManager.commitSession(SessionManager.java:339)
# at com.bea.wli.config.session.SessionManager.commitSession(SessionManager.java:297)
# at com.bea.wli.config.session.SessionManager.commitSession(SessionManager.java:306)
disconnect()
# when we try to modify the Acces Control Policy of the proxy service whith the service XML definition
def accessControlSecurity2( domain_name ):
# connection
print "\n\n\n***********************************************************************************************"
connect( 'weblogic', 'weblogic', 't3://localhost:7001')
domainRuntime()
# create a session
sessionName = String("SessionScript"+Long(System.currentTimeMillis()).toString())
SessionMBean = findService( SessionManagementMBean.NAME ,SessionManagementMBean.TYPE)
SessionMBean.createSession(sessionName)
# get service ref
ConfigurationMBean = findService(String("ALSBConfiguration.").concat(sessionName), "com.bea.wli.sb.management.configuration.ALSBConfigurationMBean")
bsQuery = ProxyServiceQuery()
bsQuery.setPath("default/*")
refs = ConfigurationMBean.getRefs(bsQuery)
for ref in refs:
print 'ref=%s'%ref
servConfMBean = findService( "%s.%s" % (ServiceConfigurationMBean.NAME, sessionName), ServiceConfigurationMBean.TYPE)
serviceDefinition = servConfMBean.getServiceDefinition(ref)
# parsing the proxy definition
nsSer = "declare namespace ser='http://www.bea.com/wli/sb/services'"
nsXsi = "declare namespace xsi='http://www.w3.org/2001/XMLSchema-instance'"
nsTran = "declare namespace tran='http://www.bea.com/wli/sb/transports'"
nsEnv = "declare namespace env='http://www.bea.com/wli/config/env'"
nsCon = "declare namespace con='http://www.bea.com/wli/sb/services/security/config'"
nsCon1 = "declare namespace con1='http://www.bea.com/wli/sb/services/security/config'"
# when we try to parse the following Xpath Expression, it' working but not sufficent to access the <con:policy-expression> element
confPath = "ser:coreEntry/ser:security/con:access-control-policies/con1:transport-level-policy"
confElem = serviceDefinition.selectPath(nsSer + nsXsi + nsTran + nsEnv + nsCon + nsCon1 + confPath )
print "WORKING{%s}" % confElem
# get the result
# <xml-fragment xsi:type="con:ProviderPolicyContainerType" xmlns:con="http://www.bea.com/wli/sb/security/accesscontrol/config" xmlns:con1="http://www.bea.com/wli/sb/services/security/config" xmlns:ser="http://www.bea.com/wli/sb/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tran="http://www.bea.com/wli/sb/transports" xmlns:env="http://www.bea.com/wli/config/env">
# <con:policy provider-id="XACMLAuthorizer">
# <con:policy-expression>Usr(USER_1,USER_2,USER_3)</con:policy-expression>
# </con:policy>
# </xml-fragment>
# and when we try to acces the <con:policy> element whith the following Xpath expression we got an empty result
confPath = "ser:coreEntry/ser:security/con:access-control-policies/con1:transport-level-policy/con:policy"
confElem = serviceDefinition.selectPath(nsSer + nsXsi + nsTran + nsEnv + nsCon + nsCon1 + confPath )
print "DON'T WORKING{%s}" % confElem
# get empty result
# array([], org.apache.xmlbeans.XmlObject)
# want to modify the value like this on the <con:policy-expression> but cannot reach it ...
#confValue="Usr(USER_A,USER_B,USER_C)"
#confElem.setStringValue(confValue)
# commit
SessionMBean.activateSession(sessionName, "description for session activation")
disconnect
# print the service definition
def printServiceDefinition( domain_name ):
# connection
connect( 'weblogic', 'weblogic', 't3://localhost:7001')
domainRuntime()
# create a session
sessionName = String("SessionScript"+Long(System.currentTimeMillis()).toString())
SessionMBean = findService( SessionManagementMBean.NAME ,SessionManagementMBean.TYPE)
SessionMBean.createSession(sessionName)
# get service ref
ConfigurationMBean = findService(String("ALSBConfiguration.").concat(sessionName), "com.bea.wli.sb.management.configuration.ALSBConfigurationMBean")
bsQuery = ProxyServiceQuery()
bsQuery.setPath("default/*")
refs = ConfigurationMBean.getRefs(bsQuery)
for ref in refs:
print 'ref=%s'%ref
servConfMBean = findService( "%s.%s" % (ServiceConfigurationMBean.NAME, sessionName), ServiceConfigurationMBean.TYPE)
serviceDefinition = servConfMBean.getServiceDefinition(ref)
servConfMBean = findService( "%s.%s" % (ServiceConfigurationMBean.NAME, sessionName), ServiceConfigurationMBean.TYPE)
serviceDefinition = servConfMBean.getServiceDefinition(ref)
print serviceDefinition
# commit
SessionMBean.activateSession(sessionName, "description for session activation")
disconnect
#accessControlSecurity1('cluster_domain')
accessControlSecurity2('cluster_domain')Hello,
I try to reproduce with WLST script the input from the consol to declare user on Access Control proxy (security).
sbconsol->$Proxy Service->Security->General Confiruration->Access Control->Transport Access Control->Add Conditions
* First implementation without success with the com.bea.wli.sb.security.management.configuration.ServiceSecurityConfigurationMBean : accessControlSecurity1()
* Second try with the service definition of the proxy service but cannot parse with Xpath accessControl Security2()
any idee ???
test case :
prerequisit
create an ALSB domain 10.3 (admin one with username='weblogic' password='weblogic' url='t3://localhost:7001') and create a proxy service on the default project
conf/setEnv.cmd
@CLS
@echo ON
@set BEA_HOME=D:\PRODUCT\MIDDLEWARE\SOA\OSB_10.3
@set WL_HOME=%BEA_HOME%\wlserver_10.3
@set OSB_HOME=%BEA_HOME%\osb_10.3
@set SCRIPTING_HOME=E:\PROJETS\RECURANT\EDF\linky\WLST\WORKING\Security
@set OSB_LIB=%OSB_HOME%/lib/sb-kernel-api.jar;%BEA_HOME%/modules/com.bea.alsb.statistics_1.0.1.0.jar;%OSB_HOME%/lib/sb-kernel-resources.jar;%OSB_HOME%/lib/sb-kernel-common.jar;%OSB_HOME%/lib/sb-kernel-impl.jar;%OSB_HOME%\lib\sb-security.jar;%OSB_HOME%/modules/com.bea.common.configfwk_1.3.0.0.jar;%BEA_HOME%/modules/com.bea.common.configfwk_1.2.0.0.jar;%BEA_HOME%/modules/com.bea.common.configfwk_1.2.1.0.jar;%OSB_HOME%/lib/modules/com.bea.alsb.resources.archive.jar;
@set TOOL_LIB=%SCRIPTING_HOME%\lib\log4j-1.2.15.jar;%SCRIPTING_HOME%\lib\jsch-0.1.43.jar;%SCRIPTING_HOME%\lib\db2jcc.jar
@set CLASSPATH=%OSB_LIB%;%TOOL_LIB%;%CLASSPATH%
@set CLASSPATH=%SCRIPTING_HOME%\lib\db2jcc.jar;%TOOL_LIB%;%CLASSPATH%
@set MODULE_LIB=%SCRIPTING_HOME%\lib
@call %WL_HOME%\server\bin\setWLSEnv.cmd > nul 2<&1
launch.cmd
@CLS
@echo OFF
@SETLOCAL
@call "conf\setEnv.cmd" > nul 2<&1
set PWD=%~dp0
%JAVA_HOME%\bin\java -Dmodule.lib=%MODULE_LIB% weblogic.WLST -skipWLSModuleScanning lib/security.py
lib/security.py
from com.bea.wli.monitoring import StatisticType
from java.util import HashMap
from java.util import HashSet
from java.util import ArrayList
from java.util import Collections
from java.io import FileInputStream
from java.io import FileOutputStream
from java.lang import String
from java.lang import Boolean
from com.bea.wli.sb.util import EnvValueTypes
from com.bea.wli.config.env import EnvValueQuery;
from com.bea.wli.config import Ref
from com.bea.wli.config.customization import Customization
from com.bea.wli.config.customization import EnvValueCustomization
from com.bea.wli.config.customization import FindAndReplaceCustomization
from com.bea.wli.sb.management.configuration import SessionManagementMBean
from com.bea.wli.sb.management.configuration import ALSBConfigurationMBean
from com.bea.wli.sb.management.query import BusinessServiceQuery
from com.bea.wli.sb.management.query import ProxyServiceQuery
from com.bea.wli.sb.management.configuration import ServiceConfigurationMBean
import os
# before, create an ALSB domain 10.3 with a proxy service in the default project and add an Acces Control Policy in the consol
# sbconsol->Project Explorer->default->${proxy service}->Security->Access Control->Create Session->Add Conditions->User->USR_1->Add
# when we try to modify the Acces Control Policy of the proxy service with the ServiceSecurityConfigurationMBean
def accessControlSecurity1( domain_name ):
# connection
print "\n\n\n***********************************************************************************************"
connect( 'weblogic', 'weblogic', 't3://localhost:7001')
domainRuntime()
# create a session
sessionName = String("SessionScript"+Long(System.currentTimeMillis()).toString())
SessionMBean = findService( SessionManagementMBean.NAME ,SessionManagementMBean.TYPE)
SessionMBean.createSession(sessionName)
# get the ServiceSecurityConfigurationMBean
serviceSecurityConfigurationMBean = findService(String("ServiceSecurityConfiguration.").concat(sessionName), "com.bea.wli.sb.security.management.configuration.ServiceSecurityConfigurationMBean")
# get the XACMLAuthorizer
working_directory=pwd()
serverConfig()
xacmlAuthorizer = cd('/SecurityConfiguration/%s/Realms/myrealm/Authorizers/XACMLAuthorizer' % domain_name )
cd(working_directory)
domainRuntime()
# get service ref
ConfigurationMBean = findService(String("ALSBConfiguration.").concat(sessionName), "com.bea.wli.sb.management.configuration.ALSBConfigurationMBean")
bsQuery = ProxyServiceQuery()
bsQuery.setPath("default/*")
refs = ConfigurationMBean.getRefs(bsQuery)
for ref in refs:
print 'ref=%s'%ref
# use the security Mbean to add : USER_A,USER_B,USER_C to the policy
policyHolder = serviceSecurityConfigurationMBean.newAccessControlPolicyHolderInstance(xacmlAuthorizer)
policyHolder.setPolicyExpression("Usr(USER_A,USER_B,USER_C)")
policyScope = serviceSecurityConfigurationMBean.newDefaultMessagePolicyScope(ref)
serviceSecurityConfigurationMBean.setAccessControlPolicy(policyScope,policyHolder)
# print the service definition
servConfMBean = findService( "%s.%s" % (ServiceConfigurationMBean.NAME, sessionName), ServiceConfigurationMBean.TYPE)
serviceDefinition = servConfMBean.getServiceDefinition(ref)
print serviceDefinition
# we can see the security entry in the service definition has follow
# <xml-fragment xmlns:ser="http://www.bea.com/wli/sb/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tran="http://www.bea.com/wli/sb/transports" xmlns:env="http://www.bea.com/wli/config/env">
# <ser:coreEntry isProxy="true" isEnabled="true" isAutoPublish="false">
# <ser:description/>
# <ser:security>
# <con:access-control-policies xmlns:con="http://www.bea.com/wli/sb/services/security/config">
# <con:message-level-policies>
# <con1:default-policy xsi:type="con:ProviderPolicyContainerType" xmlns:con="http://www.bea.com/wli/sb/security/accesscontrol/config" xmlns:con1="http://www.bea.com/wli/sb/services/security/config">
# <con:policy provider-id="XACMLAuthorizer">
# <con:policy-expression>Usr(USER_A,USER_B,USER_C)</con:policy-expression>
# </con:policy>
# </con1:default-policy>
# </con:message-level-policies>
# </con:access-control-policies>
# </ser:security>
# but when we commit
SessionMBean.activateSession(sessionName, "description for session activation")
# we got the following exception
# Unexpected error: com.bea.wli.config.session.SessionConflictException
# No stack trace available.
# Problem invoking WLST - Traceback (innermost last):
# File "E:\PROJETS\RECURANT\EDF\linky\WLST\WORKING\Security\lib\security.py", line 246, in ?
# File "E:\PROJETS\RECURANT\EDF\linky\WLST\WORKING\Security\lib\security.py", line 105, in accessControlSecurity1
# com.bea.wli.config.session.SessionConflictException: Conflicts for session SessionScript1363339726764
# [Non-Critical] Concurrent Modification Conflicts
# NONE
# [Critical] Resources with validation errors
# 1 - ProxyService test/PS_TEST_bis CannotCommit
# + CannotCommit [OSB Security:386836]Unnecessary proxy wide message access control policy found for service "test/PS_TEST_bis". Hint: The service is neither an active security
# intermediary nor has custom authentication enabled. ServiceDiagnosticLocation[SECURITY_TAB]:DiagnosticLocation:<con:message-level-policies xmlns:ser="http://www.bea.com/wli/sb/services" xml
# ns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tran="http://www.bea.com/wli/sb/transports" xmlns:env="http://www.bea.com/wli/config/env" xmlns:con="http://www.bea.com/wli/sb/services/security/config">
# <con1:default-policy xsi:type="con:ProviderPolicyContainerType" xmlns:con="http://www.bea.com/wli/sb/security/accesscontrol/config" xmlns:con1="http://www.bea.com/wli/sb/services/security/
# config">
# <con:policy provider-id="XACMLAuthorizer">
# <con:policy-expression>Usr(USER_A,USER_B,USER_C)</con:policy-expression>
# </con:policy>
# </con1:default-policy>
# </con:message-level-policies>
# [Info] Informational messages
# NONE
# at com.bea.wli.config.session.SessionManager.commitSessionUnlocked(SessionManager.java:358)
# at com.bea.wli.config.session.SessionManager.commitSession(SessionManager.java:339)
# at com.bea.wli.config.session.SessionManager.commitSession(SessionManager.java:297)
# at com.bea.wli.config.session.SessionManager.commitSession(SessionManager.java:306)
disconnect()
# when we try to modify the Acces Control Policy of the proxy service whith the service XML definition
def accessControlSecurity2( domain_name ):
# connection
print "\n\n\n***********************************************************************************************"
connect( 'weblogic', 'weblogic', 't3://localhost:7001')
domainRuntime()
# create a session
sessionName = String("SessionScript"+Long(System.currentTimeMillis()).toString())
SessionMBean = findService( SessionManagementMBean.NAME ,SessionManagementMBean.TYPE)
SessionMBean.createSession(sessionName)
# get service ref
ConfigurationMBean = findService(String("ALSBConfiguration.").concat(sessionName), "com.bea.wli.sb.management.configuration.ALSBConfigurationMBean")
bsQuery = ProxyServiceQuery()
bsQuery.setPath("default/*")
refs = ConfigurationMBean.getRefs(bsQuery)
for ref in refs:
print 'ref=%s'%ref
servConfMBean = findService( "%s.%s" % (ServiceConfigurationMBean.NAME, sessionName), ServiceConfigurationMBean.TYPE)
serviceDefinition = servConfMBean.getServiceDefinition(ref)
# parsing the proxy definition
nsSer = "declare namespace ser='http://www.bea.com/wli/sb/services'"
nsXsi = "declare namespace xsi='http://www.w3.org/2001/XMLSchema-instance'"
nsTran = "declare namespace tran='http://www.bea.com/wli/sb/transports'"
nsEnv = "declare namespace env='http://www.bea.com/wli/config/env'"
nsCon = "declare namespace con='http://www.bea.com/wli/sb/services/security/config'"
nsCon1 = "declare namespace con1='http://www.bea.com/wli/sb/services/security/config'"
# when we try to parse the following Xpath Expression, it' working but not sufficent to access the <con:policy-expression> element
confPath = "ser:coreEntry/ser:security/con:access-control-policies/con1:transport-level-policy"
confElem = serviceDefinition.selectPath(nsSer + nsXsi + nsTran + nsEnv + nsCon + nsCon1 + confPath )
print "WORKING{%s}" % confElem
# get the result
# <xml-fragment xsi:type="con:ProviderPolicyContainerType" xmlns:con="http://www.bea.com/wli/sb/security/accesscontrol/config" xmlns:con1="http://www.bea.com/wli/sb/services/security/config" xmlns:ser="http://www.bea.com/wli/sb/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tran="http://www.bea.com/wli/sb/transports" xmlns:env="http://www.bea.com/wli/config/env">
# <con:policy provider-id="XACMLAuthorizer">
# <con:policy-expression>Usr(USER_1,USER_2,USER_3)</con:policy-expression>
# </con:policy>
# </xml-fragment>
# and when we try to acces the <con:policy> element whith the following Xpath expression we got an empty result
confPath = "ser:coreEntry/ser:security/con:access-control-policies/con1:transport-level-policy/con:policy"
confElem = serviceDefinition.selectPath(nsSer + nsXsi + nsTran + nsEnv + nsCon + nsCon1 + confPath )
print "DON'T WORKING{%s}" % confElem
# get empty result
# array([], org.apache.xmlbeans.XmlObject)
# want to modify the value like this on the <con:policy-expression> but cannot reach it ...
#confValue="Usr(USER_A,USER_B,USER_C)"
#confElem.setStringValue(confValue)
# commit
SessionMBean.activateSession(sessionName, "description for session activation")
disconnect
# print the service definition
def printServiceDefinition( domain_name ):
# connection
connect( 'weblogic', 'weblogic', 't3://localhost:7001')
domainRuntime()
# create a session
sessionName = String("SessionScript"+Long(System.currentTimeMillis()).toString())
SessionMBean = findService( SessionManagementMBean.NAME ,SessionManagementMBean.TYPE)
SessionMBean.createSession(sessionName)
# get service ref
ConfigurationMBean = findService(String("ALSBConfiguration.").concat(sessionName), "com.bea.wli.sb.management.configuration.ALSBConfigurationMBean")
bsQuery = ProxyServiceQuery()
bsQuery.setPath("default/*")
refs = ConfigurationMBean.getRefs(bsQuery)
for ref in refs:
print 'ref=%s'%ref
servConfMBean = findService( "%s.%s" % (ServiceConfigurationMBean.NAME, sessionName), ServiceConfigurationMBean.TYPE)
serviceDefinition = servConfMBean.getServiceDefinition(ref)
servConfMBean = findService( "%s.%s" % (ServiceConfigurationMBean.NAME, sessionName), ServiceConfigurationMBean.TYPE)
serviceDefinition = servConfMBean.getServiceDefinition(ref)
print serviceDefinition
# commit
SessionMBean.activateSession(sessionName, "description for session activation")
disconnect
#accessControlSecurity1('cluster_domain')
accessControlSecurity2('cluster_domain') -
How to implement Post redirect Get Pattern in JSF
Hi All,
Will Post-Redirect-Get pattern solves the duplicate form submission in JSF 1.1 ? . Kindly provide valuable suggestion or implementation detail on PRG.
Regards,
DevContinuation of this thread:How to prevent dupilcate form submission in JSF 1.x
No, the PRG pattern will only make it less likely to happen. The user is still free to navigate back in the browser history to where the POST happened and then perform it again. -
Saxon parser - use in OSB/ALSB
Hi All,
We are considering use saxon to replace Oracle/BEA's internal xslt parser to increase performance , i would like to know if anybody has experience with this.
As when i change to use saxon i also get following exception.
Throwable: javax.xml.stream.FactoryConfigurationError: Provider null could not be instantiated: java.lang.NullPoin
terException
Stack Trace:
javax.xml.stream.FactoryConfigurationError: Provider null could not be instantiated: java.lang.NullPointerExceptio
n
at javax.xml.stream.FactoryFinder.newInstance(FactoryFinder.java:75)
at javax.xml.stream.FactoryFinder.find(FactoryFinder.java:136)
at javax.xml.stream.FactoryFinder.find(FactoryFinder.java:92)
at javax.xml.stream.XMLInputFactory.newInstance(XMLInputFactory.java:136)
at weblogic.descriptor.DescriptorReader.<init>(DescriptorReader.java:22)
at weblogic.management.provider.internal.ConfigReader.<init>(ConfigReader.java:71)
I have done following,
1.copied saxon libraries in $JAVA_HOME/jre/lib directory
2.created jaxp.properties in $JAVA_HOME/jre/lib
javax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl
RgdsHi Anuj,
As per standard way to plugging in xslt parser i tried to add jaxp.properties.
Although there is another way in weblogic server uising xml registry to override the default parse and this way i succeeded in replacing weblogic default xslt parser.
However ALSB has its own implementation of XSLT parser which is part of sb_core.jar , this following class most likely com.bea.wli.sb.stages.transform.TransformFactoryImpl.
We would like to use our own parser as XSLT engine has a bug.
If a xpath function is used in XSLT resource(like concat, string-join) , then XSLT fails to execute , this bug is there from Weblogic 9.2 MP2 (ALSB 2.6.1) onwards [ in Weblogic 9.2 MP1 this works properly].
So we wanted to change ALSB's default xslt parser to saxon, which is supposed to be best one available.
We do have case against this bug too ,and we hope we will get a patch .
Still we want to know if we can replace ALSB's default XSLT engine.
Rgds
Roy -
OSB (ALSB 2.6) Unwanted changes to XML messages
I have a customer who would like to pass the following XML to OSB 2.6 (ALSB):
</Parameter><Parameter Encoding="plain"><Name>TestParameter2</Name><Value><firsttag><secondtag>text_in_secondtag</secondtag></firsttag></Value></Parameter>
The problem is that once the XML is consumed by OSB it gets changed to the following:
</Parameter><Parameter Encoding="plain"><Name>TestParameter2</Name><Value><firsttag><secondtag>text_in_secondtag</secondtag></firsttag></Value></Parameter>
Is there any way to prevent this from happening?Sorry, the 2nd XML I pasted here actually got transformed on the forum, I didn't notice that when I first posted this. Let me try to explain in another way.
the sequence "& l t;" is changed to "<"
(I added the spaces this time so it did not get changed again.)
The problem is that the message is a signed message so when it is finally received the signature is different. -
For Loop in OSB(ALSB)
I have a variable in alsb:
$destinations = <destinations>
<destination>
<DESCRIPTION>
URL1
</DESCRIPTION>
</destination>
<destination>
<DESCRIPTION>
URL2
</DESCRIPTION>
</destination>
</destinations>
I have for each loop in ALSB which loops around this variable for each <destination> in <destinations>.
The problem is, when it is looping, I want to send the corresponding <description>-URL by addressing it as $destinations/destination\[$indexArg\]. It is returning all the <destination> nodes.
However, it is working fine when I use a hardcoded number instead of the variable index.
For Eg:
$destinations/destination[1] is returning the first node (as expected)
<destination>
<DESCRIPTION>
URL1
</DESCRIPTION>
</destination>
But, when I use $destinations/destination\[$indexArg\] all the destination nodes are getting returned.
I understand I am missing something. Any help will be appreciated.
Thanks in advance,
Chandan.
Edited by: user10604890 on May 20, 2009 11:31 PM
Edited by: user10604890 on May 21, 2009 12:10 PM
Edited by: user10604890 on May 21, 2009 12:11 PMI was asking about the dynamic selection of the node from a variable.
in the $destinations variable to select a particular node with a number.
Eg: $destinations/destination\[$index\]
It works fine if I say, $destinations/destination[1] and selects only the first node.
When I assign a index value there, it gives every destination variable in destinations.
For Each is not what the question is about. -
XPath expresion problems in OSB(ALSB)
Hi,
I´m working on a OSB Proxy with a conditional Branch, but I have a problem, looking to some examples in the web about xPath it is supposed that this xPath expresion:
*/iniciarCambio/cambios/companiaTipo*
with this XML:
*<iniciarCambio>*
*<cambios>*
*<ListaDeCambios>*
*<!--1 or more repetitions:-->*
*<Cambio>*
*<campoNombre>Cambio1</campoNombre>*
*<valorAnterior>antes</valorAnterior>*
*<valorNuevo>despues</valorNuevo>*
*</Cambio>*
*</ListaDeCambios>*
*<companiaId>32</companiaId>*
*<companiaNombre>MMRedes</companiaNombre>*
*<companiaTipo>Servicio</companiaTipo>*
*</cambios>*
*</iniciarCambio>*
Should return:
Servicio
But we are executing this in the Test Tool and it is returning this:
*<companiaTipo>Servicio</companiaTipo>*
Has some body struggled with this kind of issues? is there a way to make this on the OSB xPath? or am I missing someting?
Tanx alot in advanced!
Kind Regards,
Gerardo JHi all!
Thanx for the answers! I have tried in the past the /text() I tried it again and didn´t worked, some body knows how can I post some screen shots so you can see that I´m using the /text() and maybe with the screen shot you can detect something, also I´m loging the $body in the default branch(cause it is not detecting the value between the tags it goes directly to the Defaul Branch) you will se some differences in the XML since I simplified the XML to make the example and tested this simplified XML it in the TEST Tool in the console and had the same results that with the original evendough I put the /text() at the end
Here is the Body I loged in the default Branch:
<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<imp:iniciarCambio xmlns:imp="http://bea.com/albpm/MMME/ImpactarCambiosClienteBILLING">
<cambios xmlns:bea="http://bea.com/">
<bea:ListaDeCambios>
<!--1 or more repetitions:-->
<bea:Cambio>
<bea:campoNombre>Cambio1</bea:campoNombre>
<bea:valorAnterior>antes</bea:valorAnterior>
<bea:valorNuevo>despues</bea:valorNuevo>
</bea:Cambio>
</bea:ListaDeCambios>
<bea:companiaId>32</bea:companiaId>
<bea:companiaNombre>MMRedes</bea:companiaNombre>
<bea:companiaTipo>Servicio</bea:companiaTipo>
</cambios>
</imp:iniciarCambio>
</soapenv:Body>>
as you can see it is Servicio and it should have gone to one of the branches instead of the default but it didn´t
Can´t see what I´m doing wrong, but maybe some of you can.
Thanx in advanced!
Gerardo J -
How to handle OOME in OSB/ALSB
In WebLogic the advice on OutOfMemoryError is to restart the server via the panic action in overload configuration.
However, in OSB an OOME is always caught by an OSB errorhandler, so I think that leaves you with the following options
1. in all your OSB errorhandlers call System.exit(), not nice since errorhandlers cannot be reused
2. configure JRockit to exit on OOME
3. monitor WebLogic/OSB log for OOME and take some action on that
What do you think?1. in all your OSB errorhandlers call System.exit(), not nice since errorhandlers cannot be reused
Not Recommended, OOM are runtime errors and you cannot predict the when/where they can happen. Why would you want to put system.exit in every error handler. this would be over-kill. Its like putting try-catch block for every piece of java code that is written.
2. configure JRockit to exit on OOME
May not be good idea either. Only some sub-system might be effected by OOM, other systems might not be...
3. monitor WebLogic/OSB log for OOME and take some action on that
This would be the best way if I have to choose from your given 3 options
You should not how ever forget that with step 3, we should also spend some (painful!) time to identify the root-cause of the OOM and eliminate either by changing program/logic or upgrading the hardware...That is the only long-term solution.
Thanks
Manoj -
OSB/ALSB: SOA principles-orchestration
Hi
We have been developing a project in which multiple projects refer each other.
For example:
Project A has proxy service PS_A : responsible for database processing. (PS_A does some logic code in message flow and calls JCA based BS_DBProcess)
Project B has proxy service PS_B: responsible for travel transactions. (PS_B has some logic code in message flow and calls https based BS_TravelProcess)
Project C has proxy service PS_C: responsible for finance transactions. (PS_C has some logic code in message flow and calls https based BS_FinanceProcess)
Now,
I have a project D, which has proxy service PS_D which calls PS_A, PS_B, PS_C. In short what we have done is a Proxy service To Proxy service orchestration.
I was wondering if this is in accordance with SOA principles. I mean in OSB sbconsole, when I am creating a business service - I can see option of creating a business service based on a proxy service. So I was thinking if I create:
BS_A based on PS_A
BS_B based on PS_B
BS_C based on PS_C
and orchestrate them by PS_D will it be more in line of SOA principles? The difference in this case is that, I will have Proxy service to Business service orchestration, and business services will be based on existing proxy services.
So, should I continue with Proxy to proxy orchestration or make a Proxy to business orchestration ?
Thanks and Regards,
Swapnil Kharwadkarpragmatically (I don't care too much about the SOA books, all I want is something simple, manageable, fast and solid),
introducing a BS between PS_D and PS_A,B,C brings you some value when it comes to retrying a failed service, load balancing and result caching.
If you are NOT interested in any of these, then simply invoke directly the PS_A,B,C (maybe with LOCAL transport, to make it more efficient) from the PS_D -
OSB/ALSB: xquery transformation
Hi
I have xml of the form:
namespaceA="www.school.com/school"
namespaceB="www.teacher.com/teacher"
<namespaceA:School>
<namespaceA:Class>10th</namespaceA:Class>
<namespaceB:Teacher>John</namespaceB:Teacher>
</namespaceA:School>
I want to extract <Class> element, so in xquery i simply write expression and assign it to variable:
$body/namespaceA:School/namespaceA:Class so expected outcome is this : *<namespaceA:Class xmlns:namespaceA="www.school.com/school">10th</namespaceA:Class>*
However I get the following:
<namespaceA:Class xmlns:namespaceA="www.school.com/school" xmlns:namespaceB="www.teacher.com/teacher">10th</namespaceA:Class>
Now clearly I do not need namespace B declaration in the obtained sub-element <Class>.
How to stop inheriting these namespaces? I used expression : $body/namespaceA:School/@* , $body/namespaceA:School/node() But in vain.
Any ideas?if you can ignore it, just ignore it. If it really irritates you, here in OSB How to remove a namespace that is located into the <soapenv:Body> you have a few solutions - I haven't tried them so it's up to you to experiment.
-
OSB: ALSB Statistics Manager Error
Dear all,
I got this error msg,
<Jun 29, 2012 5:36:00 PM ICT> <Error> <ALSB Statistics Manager> <BEA-473003> <Aggregation Server Not Available. Failed to get remote aggregator
java.security.PrivilegedActionException: java.rmi.UnknownHostException: Could not discover URL for server 'bssesbdm1'
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at com.bea.alsb.platform.weblogic.topology.WlsRemoteServerImpl.lookupJNDI(WlsRemoteServerImpl.java:83)
at com.bea.wli.monitoring.statistics.ALSBStatisticsManager.getRemoteAggregator(ALSBStatisticsManager.java:291)
at com.bea.wli.monitoring.statistics.ALSBStatisticsManager.access$000(ALSBStatisticsManager.java:38)
Truncated. see log file for complete stacktrace
Caused By: java.rmi.UnknownHostException: Could not discover URL for server 'bssesbdm1'
at weblogic.protocol.URLManager.findURL(URLManager.java:145)
at com.bea.alsb.platform.weblogic.topology.WlsRemoteServerImpl.getInitialContext(WlsRemoteServerImpl.java:133)
at com.bea.alsb.platform.weblogic.topology.WlsRemoteServerImpl.access$000(WlsRemoteServerImpl.java:56)
at com.bea.alsb.platform.weblogic.topology.WlsRemoteServerImpl$1.run(WlsRemoteServerImpl.java:85)
at java.security.AccessController.doPrivileged(Native Method)
Truncated. see log file for complete stacktrace
>
<Jun 29, 2012 5:39:01 PM ICT> <Error> <Monitoring> <BEA-000000> <VersionIncompatibilityException detail:
Versions (this, other):
(-8718457713883866580, -3257523398790736559)
Resource version that differ (this, other):
(nonexisting, 7939255952039589595)
(nonexisting, -2571034341091110885)
(4922128814104398101, nonexisting)
(nonexisting, 2959775698021086633)
(nonexisting, 7619734982621514655)
(nonexisting, -631632660728940988)
(-6962817245131479838, nonexisting)
(4817050921499265318, -4436298627369639604)
(-5177782194385626164, -3283830087695183814)
Please suggest me how to solve this.
Thank youHi Eric,
Thank you for your reply.
The error occur when I started both M1 and M2 server.
I've already restart all manage and the admin server, set the singleton to only one managed server and set the cluster address but I still get the same error log.
Any help would be appreciated.
Thank you -
TM implementation without standard shift pattern
Hi All,
Can you please let me know, how can we configure the Time Management, if the client is not having standard shift pattern. This is a shipyard. Here the employees are not having standard shift pattern.
Thanks & Regards,
Sumathi.Hi Deck,
This is actually a ship yard, here employees are working in shifts, however specific shift pattern is not defined to anybody, because it all depends on the work assignment by the managers. In this case how can we configure the work shcdule. If i use the flexi time in the work schedule, how can i calculate the OT correctly, because there are different OT ratings based on working at day or night and after working for specific OT hours there is a different rating.
The concept that you have sent me, i did not understand.
Could you please give me more idea on this.
Thanks & Regards,
Sumathi.
Maybe you are looking for
-
How do I use MBP's built-in camera as a webcam?
I want to use my MBP's built-in camera as a webcam so I can use my iPhone to access a website and see what the webcam is pointing at. How do I do this? Thanks in advance. /rb
-
Add/Remove data object from dataset
Hello, I was working out a way to add and remove data from a dataset on the fly and could not figure out any built in methods to do this. As I have decided to include spry in my project I like to try and utilise as much as of its code as possible sin
-
Thunderbolt to HDMI not Detecting LG TV
My imac is not detecting Thunderbolt to HDMI not Detecting LG TV Only did detect once and now can get it back?? Mac Version 10.7.5
-
IMac G5 VPN to Corporate Windows Network
I am using Cisco VPN Client to connect to my company's Windows network in hopes of remote desktop access. I am able to connect to the network but when put in the IP address to my desktop PC at work, I am unable to connect to it (using Windows Remote
-
HT3209 I have a movie downloaded how do I get it to play?
I have a movie downloaded how do I get it to play