Tuesday, October 27, 2015

SOA Suite 12.2.1 is released. Below is the summary of New Features

SOA Suite 12.2.1 was released and below is the summary of new features.
·         Patch running instances of the composites.
This features enables us to patch the running instances of a composite and recover faulted instances after patching the runtime. However we can only include those fixes in the patch that are compatible with Composite Instance Patching.
To create the patch we need to use the SOA Patch Developer role in Oracle JDeveloper
This will help us to deliver urgent composite fixes that can be picked up by long running instances. This enables us to make changes without aborting in-flight instances. If a patched running instance comes across a business process that has been fixed by the patch, say a BPEL transformation, then it picks up the fixes applied to the business process. Read more here 

·         Support for in Memory SOA: Oracle has been pushing hard on coherence and this is one more example where coherence cache can be used. Using this feature the non-transactional business process as read and write operations are performed out of the cache as opposed to database in previous releases. The database performance and management also improves, as the costs associated with continuous disk reads and writes are significantly reduced. Read more here 


·         Debugging Improvements in XSLT mapper: Now we can debug our XSLT maps using the SOA Debugger. We can add breakpoints just like java at strategic locations in the XSLT map. During debugging, the debugger halts execution at the breakpoints, enabling us to verify the data and output.

·         Support for End-to-End JSON and JavaScript.  Now our SOA composites can use JSON from end to end. This means that now the REST service can receive the REST request and route it to the BPEL engine without translating it to XML. The BPEL component can use the JavaScript action, and also use JavaScript in conditional and iterative constructs, to work on JSON objects directly. The REST reference can receive the REST message from the BPEL engine and route it to an external REST endpoint without translation. Following are some of the features:-
    1. Enable End-to-End JSON
    2. Enable End-to-End JSON
    3. Enable REST support in new or existing services.
    4. Integrate with external REST APIs.
    5. Orchestrate a set of RESTful state transitions (RPC/Hypermedia as the Engine of Application State (HATEOAS) approach).
    6. Support for XML, JavaScript Object Notation (JSON) (with automatic translation to and from XML), text, opaque (binary), and URL-encoded payload data.
    7. Generation of sample URI for REST service operations.
    8. Support for WADL services. The WADL can be provided by a deployed Oracle SOA Suite or Oracle Service Bus service or a non-Oracle SOA Suite or Oracle Service Bus service such as a Jersey REST service.  Read more here 


Reference :- Oracle Docs

Monday, October 26, 2015

SOA Suite 12C - Resolve MBean attribute access denied. MBean: oracle.soa.config:name="default",j2eeType=SOAFolder,Application=soa-infra Error

Recently while working on a SOA 12C project I was seeing the following error in the logs.
<AdminServer> <[ACTIVE] ExecuteThread: '20' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <c3edacf6-49eb-407c-a03b-ac905a0a8ad1-000017eb> <1441380976786> <BEA-080003> <A RuntimeException was generated by the RMI server: javax.management.remote.rmi.RMIConnectionImpl.getAttribute(Ljavax.management.ObjectName;Ljava.lang.String;Ljavax.security.auth.Subject;)
javax.management.RuntimeMBeanException: java.lang.SecurityException: MBean attribute access denied.
MBean: oracle.soa.config:name="default",j2eeType=SOAFolder,Application=soa-infra
Getter for attribute State
Detail: access denied ("oracle.fabric.permission.CompositePermission" "default" "read").
javax.management.RuntimeMBeanException: java.lang.SecurityException: MBean attribute access denied.


On : 12.1.3.0.0 version, Fabric

MBean attribute access denied. Warning/Errors seen in the Admin/SOA domain logs

The Admin/SOA domain server logs are repeatedly filled with MBean attribute access denied warnings. It doesn't affect the deployment or composites during runtime. The user is not logging as weblogic but as ohscustadmin.

<Warning> <RMI> <hostname> <AdminServer> <[ACTIVE] ExecuteThread: '20' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <c3edacf6-49eb-407c-a03b-ac905a0a8ad1-000017eb> <1441380976786> <BEA-080003> <A RuntimeException was generated by the RMI server: javax.management.remote.rmi.RMIConnectionImpl.getAttribute(Ljavax.management.ObjectName;Ljava.lang.String;Ljavax.security.auth.Subject;)
javax.management.RuntimeMBeanException: java.lang.SecurityException: MBean attribute access denied.
MBean: oracle.soa.config:name="default",j2eeType=SOAFolder,Application=soa-infra
Getter for attribute State
Detail: access denied ("oracle.fabric.permission.CompositePermission" "default" "read").
javax.management.RuntimeMBeanException: java.lang.SecurityException: MBean attribute access denied.


ERROR
-----------------------
[oracle.as.jmx.framework.generic.spi.security.AbstractMBeanSecurityInterceptor] [tid: [ACTIVE].ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: odemmon] [ecid: f66cbcbf-ba3c-48da-8cde-f3d7578fcda2-00023944,0] [APP: soa-infra] MBean attribute access denied. [[
MBean: oracle.as.soainfra.config:name=soa-infra,type=SoaInfraConfig,Application=soa-infra
Getter for attribute NonFatalConnectionMaxRetry
Detail: access denied ("oracle.fabric.permission.SOAPlatformPermission" "read") java.security.AccessControlException: access denied ("oracle.fabric.permission.SOAPlatformPermission" "read")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372)
at java.security.AccessController.checkPermission(AccessController.java:559)
at oracle.security.jps.util.JpsAuth$AuthorizationMechanism$3.checkPermission(JpsAuth.java:472)
at oracle.security.jps.util.JpsAuth.checkPermission(JpsAuth.java:532)
at oracle.security.jps.util.JpsAuth.checkPermission(JpsAuth.java:558)
at oracle.fabric.permission.internal.InternalSOAPermissionCheckHelper$2.run(InternalSOAPermissionCheckHelper.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at oracle.fabric.permission.internal.InternalSOAPermissionCheckHelper.internalCheckSOAPermission(InternalSOAPermissionCheckHelper.java:200)
at oracle.fabric.permission.internal.InternalSOAPermissionCheckHelper.checkSOAPermission(InternalSOAPermissionCheckHelper.java:171)
at oracle.fabric.permission.management.SOAPermissionCheckPluginFactory$SOAMBeanCustomSecurityPlugin.checkGetAttribute(SOAPermissionCheckPluginFactory.java:60)
at oracle.as.jmx.framework.MBeanCustomSecurityHelper.checkGetAttribute(MBeanCustomSecurityHelper.java:193)
at oracle.as.jmx.framework.generic.spi.security.AbstractMBeanSecurityInterceptor.checkAttributeAccess(AbstractMBeanSecurityInterceptor.java:264)
at oracle.as.jmx.framework.generic.spi.security.AbstractMBeanSecurityInterceptor.internalGetAttributes(AbstractMBeanSecurityInterceptor.java:138)
at oracle.as.jmx.framework.generic.spi.interceptors.AbstractMBeanInterceptor.doGetAttributes(AbstractMBeanInterceptor.java:114)
at oracle.security.jps.ee.jmx.JpsJmxInterceptor$GetAttributesDelegator.delegate(JpsJmxInterceptor.java:959)
at oracle.security.jps.ee.jmx.JpsJmxInterceptor$7.run(JpsJmxInterceptor.java:826)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:460)
at oracle.security.jps.ee.jmx.JpsJmxInterceptor.jpsInternalInvoke(JpsJmxInterceptor.java:868)
at oracle.security.jps.ee.jmx.JpsJmxInterceptor.internalGetAttributes(JpsJmxInterceptor.java:217)
at oracle.as.jmx.framework.generic.spi.interceptors.AbstractMBeanInterceptor.doGetAttributes(AbstractMBeanInterceptor.java:114)
at oracle.as.jmx.framework.generic.spi.interceptors.ContextClassLoaderMBeanInterceptor.internalGetAttributes(ContextClassLoaderMBeanInterceptor.java:115)
at oracle.as.jmx.framework.generic.spi.interceptors.AbstractMBeanInterceptor.doGetAttributes(AbstractMBeanInterceptor.java:114)
at oracle.as.jmx.framework.generic.spi.interceptors.MBeanRestartInterceptor.internalGetAttributes(MBeanRestartInterceptor.java:87)
at oracle.as.jmx.framework.generic.spi.interceptors.AbstractMBeanInterceptor.doGetAttributes(AbstractMBeanInterceptor.java:114)
at oracle.as.jmx.framework.standardmbeans.spi.OracleStandardEmitterMBean.getAttributes(OracleStandardEmitterMBean.java:654)
at oracle.as.jmx.framework.standardmbeans.spi.OracleStandardEmitterConfigMBean.getAttributes(OracleStandardEmitterConfigMBean.java:620)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttributes(DefaultMBeanServerInterceptor.java:709)
at com.sun.jmx.mbeanserver.JmxMBeanServer.getAttributes(JmxMBeanServer.java:705)
at weblogic.management.jmx.mbeanserver.WLSMBeanServerInterceptorBase$13.run(WLSMBeanServerInterceptorBase.java:353)
at java.security.AccessController.doPrivileged(Native Method)
at weblogic.management.jmx.mbeanserver.WLSMBeanServerInterceptorBase.getAttributes(WLSMBeanServerInterceptorBase.java:351)
at weblogic.management.mbeanservers.internal.JMXContextInterceptor.getAttributes(JMXContextInterceptor.java:192)
at weblogic.management.jmx.mbeanserver.WLSMBeanServerInterceptorBase$13.run(WLSMBeanServerInterceptorBase.java:353)
at java.security.AccessController.doPrivileged(Native Method)
at weblogic.management.jmx.mbeanserver.WLSMBeanServerInterceptorBase.getAttributes(WLSMBeanServerInterceptorBase.java:351)
at weblogic.management.mbeanservers.internal.SecurityInterceptor.getAttributes(SecurityInterceptor.java:308)
at weblogic.management.jmx.mbeanserver.WLSMBeanServer.getAttributes(WLSMBeanServer.java:292)
at weblogic.management.mbeanservers.internal.JMXConnectorSubjectForwarder$6$1.run(JMXConnectorSubjectForwarder.java:383)
at weblogic.management.mbeanservers.internal.JMXConnectorSubjectForwarder$6$1.run(JMXConnectorSubjectForwarder.java:381)
at java.security.AccessController.doPrivileged(Native Method)
at weblogic.management.mbeanservers.internal.JMXConnectorSubjectForwarder$6.run(JMXConnectorSubjectForwarder.java:381)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.management.mbeanservers.internal.JMXConnectorSubjectForwarder.getAttributes(JMXConnectorSubjectForwarder.java:376)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:97)
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1328)
at java.security.AccessController.doPrivileged(Native Method)
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1427)
at javax.management.remote.rmi.RMIConnectionImpl.getAttributes(RMIConnectionImpl.java:693)
at javax.management.remote.rmi.RMIConnectionImpl_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:701)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:527)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:523)
at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)



Raised an Oracle SR and the solution provided by them was :-


1) Login into WLS console
2) select the domain -> security -> Embedded LDAP
3) Make sure "Refresh Replica At Startup " is enabled
4) save changes & restart all servers

enjoy!!