Monday, November 10, 2014

Quickly check and fix the POODLE vulnerability on Apache, WebLogic Server, and OHS

If you are running SSL 3.0, you need to be aware of the POODLE vulnerability:

There are no patches since the POODLE vulnerability is a design flaw in the protocol itself and not an implementation bug. TLS is now the preferred encryption protocol.


Are you vulnerable?

Courtesy of this website, you can check if your website is available over SSLv3 with:
curl -v -3 -X HEAD https://www.raastech.com
If you are not vulnerable, you should not be able to connect, and your output should look something like this:
* SSL peer handshake failed, the server most likely requires a client certificate to connect
If you are vulnerable, you should see normal connection output, including the line:
* SSL 3.0 connection using SSL_NULL_WITH_NULL_NULL


Fix for Apache

1. Edit the ssl.conf and add the following:
SSLProtocol All -SSLv2 -SSLv3


Fix for WebLogic Server

1. Add the following to all the JVMs:
-Dweblogic.security.SSL.protocolVersion=TLS1 
2. Remove the following line if found in the configuration:
-Dweblogic.security.SSL.protocolVersion=SSL3
3. Restart.



Fix for Oracle HTTP Server (OHS)

1. Edit httpd.conf and edit the SSLProtocol directive as follows:
OLD: SSLProtocol ALL –SSLv2
NEW: SSLProtocol ALL –SSLv2 –SSLv3
2. Restart.



References:




 

Thursday, November 6, 2014

WebLogic JMS: Failed to create managed connection due to NullPointerException

Problem:

Our SOA composite is using the JMSAdapter to poll messages from a JMS queue. However, no messages were being polled.

Our JCA file looked like this. Nothing special about it and you can see that our connection factory JNDI is set to eis/jms/Order and our queue JNDI is jms/OrderQueue.
<adapter-config name="ConsumeOrder" adapter="JMS Adapter" wsdlLocation="ConsumeOrder.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
  <connection-factory location="eis/jms/Order" UIJmsProvider="WLSJMS" UIConnectionName="EBIZPROD"/>
  <endpoint-activation portType="Consume_Message_ptt" operation="Consume_Message">
    <activation-spec className="oracle.tip.adapter.jms.inbound.JmsConsumeActivationSpec">
      <property name="PayloadType" value="TextMessage"/>
      <property name="UseMessageListener" value="false"/>
      <property name="DestinationName" value="jms/OrderQueue"/>
    </activation-spec>
  </endpoint-activation>
</adapter-config>
When we enabled the oracle.soa.adapter logger to TRACE:32, not much additional information was revealed, but these are the recurring entries we see in the soa_server1-diagnostic.log file:
[2014-11-06T00:43:18.826-05:00] [soa_server1] [TRACE] [] [oracle.soa.adapter] [tid: [ACTIVE].ExecuteThread: '27' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: 7fecb0f5a423ee5f:-2152fc99:1497985c034:-8000-0000000002803edb,0] [APP: soa-infra] [SRC_CLASS: oracle.integration.platform.blocks.adapter.fw.log.LogManagerImpl] [SRC_METHOD: log] JMSAdapter SOAOrder JMSConnectionFactoryFactory_getConnectionFactory: looking up 'null' 
[2014-11-06T00:43:18.826-05:00] [soa_server1] [ERROR] [] [oracle.soa.adapter] [tid: [ACTIVE].ExecuteThread: '27' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: 7fecb0f5a423ee5f:-2152fc99:1497985c034:-8000-0000000002803edb,0] [APP: soa-infra] JMSAdapter SOAOrder JMSMessageConsumer_init:[destination = JMSServer_1@jms/OrderQueue (payload = 1)]:Failed to create managed connection: java.lang.NullPointerException 
[2014-11-06T00:43:18.826-05:00] [soa_server1] [ERROR] [] [oracle.soa.adapter] [tid: [ACTIVE].ExecuteThread: '27' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: 7fecb0f5a423ee5f:-2152fc99:1497985c034:-8000-0000000002803edb,0] [APP: soa-infra] JMSAdapter SOAOrder [[
javax.resource.spi.ResourceAdapterInternalException: Failed to create managed connection: java.lang.NullPointerException
        at weblogic.connector.outbound.ConnectionFactory.createResource(ConnectionFactory.java:152)
        at weblogic.common.resourcepool.ResourcePoolImpl.makeResources(ResourcePoolImpl.java:1322)
        at weblogic.common.resourcepool.ResourcePoolImpl.reserveResourceInternal(ResourcePoolImpl.java:428)
        at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:352)
        at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:332)
        at weblogic.connector.outbound.ConnectionPool.reserveResource(ConnectionPool.java:620)
        at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:326)
        at weblogic.connector.outbound.ConnectionManagerImpl.getConnectionInfo(ConnectionManagerImpl.java:380)
        at weblogic.connector.outbound.ConnectionManagerImpl.getConnection(ConnectionManagerImpl.java:320)
        at weblogic.connector.outbound.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:129)
        at oracle.tip.adapter.jms.JmsConnectionFactory.getConnection(JmsConnectionFactory.java:93)
        at oracle.tip.adapter.jms.JMS.JMSMessageConsumer.createConsumer(JMSMessageConsumer.java:321)
        at oracle.tip.adapter.jms.JMS.JMSMessageConsumer.init(JMSMessageConsumer.java:920)
        at oracle.tip.adapter.jms.inbound.JmsConsumer.init(JmsConsumer.java:894)
        at oracle.tip.adapter.jms.JmsDDEndpoint.onDestinationsAvailable(JmsDDEndpoint.java:175)
        at weblogic.jms.extensions.JMSDestinationAvailabilityHelper$DestinationAvailabilityListenerWrapper$2.run(JMSDestinationAvailabilityHelper.java:386)
        at weblogic.jms.extensions.JMSDestinationAvailabilityHelper$DestinationAvailabilityListenerWrapper.callOutListener(JMSDestinationAvailabilityHelper.java:402)
        at weblogic.jms.extensions.JMSDestinationAvailabilityHelper$DestinationAvailabilityListenerWrapper.onDDMembershipChange(JMSDestinationAvailabilityHelper.java:383)
        at weblogic.jms.common.CDS$DD2Listener.run(CDS.java:1279)
        at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:545)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused by: java.lang.NullPointerException
        at javax.naming.InitialContext.lookup(InitialContext.java:392)
        at oracle.tip.adapter.jms.JMS.JMSConnectionFactoryFactory.getConnectionFactory(JMSConnectionFactoryFactory.java:132)
        at oracle.tip.adapter.jms.JMS.JMSConnectionFactoryFactory.getQueueConnectionFactory(JMSConnectionFactoryFactory.java:86)
        at oracle.tip.adapter.jms.JMS.JMSConnection.init(JMSConnection.java:156)
        at oracle.tip.adapter.jms.JMS.JMSConnection.<init>(JMSConnection.java:113)
        at oracle.tip.adapter.jms.JMS.WLJMSConnection.<init>(WLJMSConnection.java:76)
        at oracle.tip.adapter.jms.JmsManagedConnectionFactory.createConnection(JmsManagedConnectionFactory.java:311)
        at oracle.tip.adapter.jms.JmsManagedConnectionFactory.createDefaultConnection(JmsManagedConnectionFactory.java:305)
        at oracle.tip.adapter.jms.JmsManagedConnectionFactory.createConnection(JmsManagedConnectionFactory.java:286)
        at oracle.tip.adapter.jms.JmsManagedConnectionFactory.createManagedConnection(JmsManagedConnectionFactory.java:92)
        at weblogic.connector.security.layer.AdapterLayer.createManagedConnection(AdapterLayer.java:803)
        at weblogic.connector.outbound.ConnectionFactory.createResource(ConnectionFactory.java:91)
        ... 20 more

Navigating to the JmsAdapter in the WebLogic Server Administration Console (navigate to Deployments > JmsAdapter > Monitoring > Outbound Connection Pools), we can see that there are considerable "Rejected Connections":

In the Oracle documentation, the definition of a "Rejected Connection" does not yield too much information:
Rejected Connections:
The total number of rejected requests for a Connector connections in this Connector Pool since the pool is instantiated.

Solution:

Looking deeper into the stack trace in the log above, it seems that getting the connection factory is returning 'null'.

1. Log in to the WebLogic Server Administration Console

2. Navigate to Deployments > JmsAdapter > Configuration > Outbound Connection Pools

3. Expand oracle.tip.adapter.jms.IJmsConnectionFactory and click on the JNDI eis/jms/Order

4. The ConnectionFactoryLocation is empty. Populate this with the appropriate value.

5. Save and redeploy the JmsAdapter.


Applicable Versions:
  • Oracle WebLogic Server 11g (10.3.5+)
  • Oracle SOA Suite 11g (11.1.1.5+) 

 

Tuesday, November 4, 2014

Resolving BEA-101216 and MDS-00054 (composite.xml does not exist) at SOA server startup

Problem:

The soa-infra application was causing the soa_server1 to go into ADMIN mode with the following error in the logs:
<Nov 4, 2014 12:43:22 PM EDT> <Error> <oracle.integration.platform.blocks.cluster> <BEA-000000> <Starting in multicast, rather than unicast, mode for SOA/Coherence clustering. This is not the configuration recommended by the Oracle Enterprise Deployment Guide (EDG). If continuing to use multicast you may run into deployment issues if there are multicast address conflicts with other servers on your network. If attempting unicast operation, make sure the unicast well-known addresses (-Dtangosol.coherence.wka1, -Dtangosol.coherence.wka2,..) and ports are set for scaling out to multiple servers per the EDG.>
INFO: FaultPoliciesParser.<init> ------->Constructed Policy parser 
<Nov 4, 2014 12:44:02 PM EDT> <Warning> <oracle.soa.services.notification> <BEA-000000> <<.> With the current setting, only Email notifications will be sent; Notifications via voice, SMS or IM will not be sent. If you would like to enable them, please configure corresponding sdpmessaging driver. Then modify the accounts and set NotificationMode attribute to ALL in workflow-notification-config.xml>
BPMNServiceEngine=> constructed ....
log4j:WARN No appenders could be found for logger (wsif).
log4j:WARN Please initialize the log4j system properly. 
<Nov 4, 2014 12:45:02 PM EDT> <Warning> <oracle.as.jmx.framework.MessageLocalizationHelper> <J2EE JMX-46041> <The resource for bundle "oracle.soa.management.config.identity.mbeans.MessageBundle_en" with key "ProviderMXBean.SearchableUserAttributMapAdd" cannot be found.> 
<Nov 4, 2014 12:45:23 PM EDT> <Error> <HTTP> <BEA-101216> <Servlet: "FabricInit" failed to preload on startup in Web application: "/soa-infra".
oracle.fabric.common.FabricException: Error in getting XML input stream: oramds:/deployed-composites/HelloWorld_rev1.0/composite.xml: oracle.mds.exception.MDSException: MDS-00054: The file to be loaded oramds:/deployed-composites/HelloWorld_rev1.0/composite.xml does not exist.
at oracle.fabric.common.metadata.MetadataManagerImpl.getInputStreamFromAbsoluteURL(MetadataManagerImpl.java:288)
at oracle.integration.platform.common.MDSMetadataManagerImpl.getInputStreamFromAbsoluteURL(MDSMetadataManagerImpl.java:624)
at oracle.fabric.common.metadata.MetadataManagerImpl.getDocumentAsInputStream(MetadataManagerImpl.java:164)
at oracle.integration.platform.common.MDSMetadataManagerImpl.getDocumentAsInputStream(MDSMetadataManagerImpl.java:486)
at oracle.integration.platform.kernel.FabricKernelInitializerServlet.deployComposite(FabricKernelInitializerServlet.java:762)
Truncated. see log file for complete stacktrace
Caused By: java.io.IOException: oracle.mds.exception.MDSException: MDS-00054: The file to be loaded oramds:/deployed-composites/HelloWorld_rev1.0/composite.xml does not exist.
We are unable to undeploy the faulty composite HelloWorld while the soa-infra application is down.


Solution:

To undeploy a SOA composite application while the soa-infra application is down, perform the following steps.

1. See Oracle Support Doc ID 1380835.1 and download ShareSoaInfraPartition.ear

2. Run the following commands:
cp ShareSoaInfraPartition.ear /u01/app/oracle/middleware/oracle_common/common/bin 
cd /u01/app/oracle/middleware/oracle_common/common/bin 
./wlst.sh 
connect() 
deploy('ShareSoaInfraPartition','ShareSoaInfraPartition.ear',upload='true') 
exportMetadata(application='ShareSoaInfraPartition',server='AdminServer',toLocation='/tmp/ahmed',docs='/deployed-composites/deployed-composites.xml') 
vi /tmp/ahmed/deployed-composites/deployed-composites.xml

3. Delete the lines of that are of the composite you want removed. For example, delete these lines in the file:
<composite-series name="default/HelloWorld" default="default/HelloWorld!1.0"> 
  <composite-revision dn="default/HelloWorld!1.0" state="on" mode="active" location="dc/soa_642a5dc3-5453-447e-b8a8-b707907cb6f6"> 
    <composite dn="default/HelloWorld!1.0*soa_e566512d-69ef-4d29-83dd-c3d38ce14916" deployedTime="2014-02-27T19:02:26.120-05:00"/> 
    <composite dn="default/HelloWorld!1.0*soa_642a5dc3-5453-447e-b8a8-b707907cb6f6" deployedTime="2014-06-23T14:41:03.155-04:00"/> 
  </composite-revision> 
</composite-series>
4. Then run this final command:
importMetadata(application='ShareSoaInfraPartition',server='AdminServer',fromLocation='/tmp/ahmed',docs='/deployed-composites/deployed-composites.xml')

References:
  • Oracle Support Doc ID 1380835.1

Applicable Versions:
  • Oracle SOA Suite 11g (11.1.1.5+) 

 

Wednesday, October 29, 2014

JCA FTP Adapter limited to 4MB in OSB

Problem:

If you are using the FTPAdapter with OSB 11g (specifically 11.1.1.7), you may experience the following Java exception in the osb_server1.out log file:
####<Oct 29, 2014 3:04:41 AM EDT> <Warning> <JCA_FRAMEWORK_AND_ADAPTER> <soahost1> <osb_server1> <[STUCK] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <0000K^N1fyV8t1RMyYqYMG1JKBeB0000uE> <1413443141803> <BEA-000000> <onReject: The resource adapter 'FTP Adapter' requested handling of a malformed inbound message. However, the following activation property has not been defined: 'rejectedMessageHandlers'. Please define it and redeploy. Will use the default Rejection Directory file://jca/Get/rejectedMessages for now.>

Solution:

The default properties in the JCA FTP Adapter limits files to 4MB when polling for inbound messages.

1. Edit the FTPAdapter and add the following property:
<property name="SupportsScalableDOM" value="false"/>

References:

  • Oracle Document Id: PayloadSizeThreshold not Working for Files Larger than 4MB (Doc ID 1628065.1)


Applicable Versions:
  • Oracle Service Bus (OSB) 11g (11.1.1.7) 

 

Tuesday, October 28, 2014

Oracle OpenWorld 2014 Opening Keynote

The week of Oracle OpenWorld 2014 started out Sunday, September 28th, 2014 in true Oracle fashion. Safra Catz, one of the two newly appointed CEO's of Oracle, who has been with Oracle for 15 years started out the afternoon Keynote by saying that even though he has stepped down as CEO, "Larry Ellison’s vision is more alive today than ever." Then, Catz introduced her friend and fellow industry leader Renee James, and, after the two leading females snagged a quick hug from one another, James took the stage to share her keynote on "The Future of the Data Center in a Software-Defined World."


Renee, President of Intel Corporation, described her excitement of being the "opening act" for Larry Ellison and how this year marks a 20-year partnership between Oracle and Intel. She began her keynote by trying to convey the massive quantities in which data is being used today, and how much data will be being used in the future. She says making sense of all the data is the key to providing meaningful insights into the human condition.


In her keynote, James talked about "Big Bang" of data, private cloud vs. public cloud, the Next Generation firewall, the first Silicon photonics chip, and something called the Nile-o-Meter. She explained that 90% of the data today, was produced in the last 2 years. She described the partnership between Intel and Oracle, and how the two companies are working together to provide value in the areas of private cloud, in many cases exceeding that of the public cloud. Also, she spoke about the future of private and public clouds, saying that it is possible for private clouds to have similar costs to public clouds, and how 47% of workloads are expected to be running in a hybrid mode by 2017. Lastly, she gave the crowd a sneak peak at Intel's new silicon photonics chip, which is able to move data faster than traditional copper over longer distances.

Renee introduced Larry Ellison, donning his new title of Chief Technology Officer and Executive Chairman of the Board at Oracle. Ellison stepped down as CEO in the weeks prior to Oracle OpenWorld 2014. Ellison took the stage and welcomed the OOW 14 attendees. He began the opening keynote by describing 2014 as a turning point for Oracle. He explained that this year, Oracle built a lot of technology for the cloud and gained momentum in the cloud business. Several years ago Oracle realized that they will had no choice but to deliver services at all 3 layers of the cloud. The reason is because of a promise he made to Oracle's customers 30 years ago. A promise that compelled him to deliver Saas, Paas, and Iaas together, and better than the competitor. He explains that Oracle has more applications than anybody, and Oracle's upgrade to platform allows you to move any database to the cloud by pushing a button.


Between swigs from his glass bottle of Coca-Cola, he explained how three decades ago, Oracle customers were wanting to move from minicomputer and mainframe database to the next generation of architecture without re-writing everything. Oracle made a promise to make this easy. Customers expect Oracle to move databases to the next generation without changing a single line of code. Therefore, the big announcement for the day was the "massively" upgraded Oracle Database Platform as a Service. Database is Oracle's largest software business, and Larry confidently declares that database will be by far their largest cloud business. Customers have been waiting for the opportunity to take advantage of lower cost and higher reliability, but they want to move to the cloud gracefully and easily. Oracle allows them to move and modernize. However, Ellison maintained that Oracle is just getting started in the Cloud. Ellison closed the keynote by saying that "there is nothing more important in the modern cloud than securing your data" and delivered another 30 year promise, that discovering and stopping programs with malicious intent is top priority at Oracle.

Sunday, September 21, 2014

Using the Camera In iOS 8 with Swift

There are many examples out there that solidly explain how to use a camera using Objective-C. They can be found here, here, and many other places. The one thing I had not yet seen was how exactly to use it when using the new Swift Language that Apple recently released.

Below is the code that can be used, and there are a two changes to note that have come with the iOS 8 SDK.  The first is UIImagePickerControllerSourceType  where before you would access it by calling UIImagePickerControllerSourceTypeCamera now you call  UIImagePickerControllerSourceType.Camera . The second has more to do with strings different types, CFString vs NSString so to deal with this little issue the following code exists:

let compResult:CFComparisonResult = CFStringCompare(mediaType as NSString!, kUTTypeImageCFStringCompareFlags.CompareCaseInsensitive)
        if ( compResult == CFComparisonResult.CompareEqualTo ) {

Other than that there are the obvious differences between Objective-C and Swift. I hope this helps.

Example Code:

import UIKit
import CoreData
import MobileCoreServices


class CameraVC: UIViewController,UINavigationControllerDelegate,UIImagePickerControllerDelegate {


    @IBOutlet weak var cameraView: UIImageView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        

        // Do any additional setup after loading the view, typically from a nib.
    }
    
    override func viewWillAppear(animated: Bool) {
        
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    // MARK: - Action Methods
    
    @IBAction func takePhoto(sender: AnyObject) {
        if (UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera)){
            var picker = UIImagePickerController()
            picker.delegate = self
            picker.sourceType = UIImagePickerControllerSourceType.Camera
            var mediaTypes: Array<AnyObject> = [kUTTypeImage]
            picker.mediaTypes = mediaTypes
            picker.allowsEditing = true
            self.presentViewController(picker, animated: true, completion: nil)
            
            
        }
        else{
            NSLog("No Camera.")
        }
    }
    
    // MARK: - Delegate Methods
    
    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: NSDictionary!) {
        NSLog("Did Finish Picking")
        let mediaType = info[UIImagePickerControllerMediaType] as String
        var originalImage:UIImage?, editedImage:UIImage?, imageToSave:UIImage?
        
        // Handle a still image capture
        let compResult:CFComparisonResult = CFStringCompare(mediaType as NSString!, kUTTypeImage, CFStringCompareFlags.CompareCaseInsensitive)
        if ( compResult == CFComparisonResult.CompareEqualTo ) {
                
                editedImage = info[UIImagePickerControllerEditedImage] as UIImage?
                originalImage = info[UIImagePickerControllerOriginalImage] as UIImage?
                
                if ( editedImage == nil ) {
                    imageToSave = editedImage
                } else {
                    imageToSave = originalImage
                }
                NSLog("Write To Saved Photos")
                cameraView.image = imageToSave
                cameraView.reloadInputViews()
            
                // Save the new image (original or edited) to the Camera Roll
                UIImageWriteToSavedPhotosAlbum (imageToSave, nil, nil , nil)
            
        }

        picker.dismissViewControllerAnimated(true, completion: nil)
        
    }
    
    func imagePickerControllerDidCancel(picker: UIImagePickerController) {
        picker.dismissViewControllerAnimated(true, completion: nil)
    }
    
    

}





Mule: No SQL Strategy found Issue in SQL Server


Problem

I was working on a Mule ESB process, when I came upon an error.

Root Exception stack trace:
java.lang.IllegalArgumentException: No SQL Strategy found for SQL statement: USE XXX_ServiceNow; SELECT LastEventId,LastEventTime FROM dbo.EVENTS_TRACKING;
at com.mulesoft.mule.transport.jdbc.sqlstrategy.EESqlStatementStrategyFactory.create(EESqlStatementStrategyFactory.java:109)
at org.mule.transport.jdbc.JdbcMessageDispatcher.doSend(JdbcMessageDispatcher.java:69)
at org.mule.transport.AbstractMessageDispatcher.process(AbstractMessageDispatcher.java:81)
+ 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)


I will admit this was one of the first times I had worked with SQL Server. I typically use everything except it, but I digress. I was attempting a simple query from a table, but getting back "No SQL Strategy..."

Solution

I had seen this error before, and what it means is that there essentially no SQL plan to be executed. In the original state. I was technically performing two operations.
1. Specifying which database to use.
2. Querying the table.
To solve my problem I needed to combine these two statements into a single statement.

The resulting code looked something like this:
SELECT <FieldName1>, <FieldName2>
FROM <DatabaseName>.<SchemaName>.<TableName>


Friday, August 22, 2014

JCA-11622 using the DbAdapter with OSB 11g

Problem:

If you are using the DbAdapter with OSB 11g (specifically 11.1.1.7), you may experience the following Java exception in the osb_server1.out log file:
jca-transport-application-error xmlns="http://www.bea.com/wli/sb/transports/jca" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><jca-transport-error-message>Invoke JCA outbound service failed with application error</jca-transport-error-message><jca-runtime-fault-detail><eis-error-code xsi:nil="true"/><eis-error-message xsi:nil="true"/><exception>com.bea.wli.sb.transports.jca.JCATransportException: oracle.tip.adapter.sa.api.JCABindingException: oracle.tip.adapter.sa.impl.fw.ext.org.collaxa.thirdparty.apache.wsif.WSIFException: servicebus:/WSDL/CreateOrderProvABCSImpl/WSDL/ShipmentOrder [ Order_ptt::insert(OmOrderCollection) ] - WSIF JCA Execute of operation 'insert' failed due to: Could not create/access the TopLink Session.This session is used to connect to the datastore.Caused by java.lang.NullPointerException.; nested exception is:BINDING.JCA-11622Could not create/access the TopLink Session.This session is used to connect to the datastore.Caused by java.lang.NullPointerException.You may need to configure the connection settings in the deployment descriptor (i.e. DbAdapter.rar#META-INF/weblogic-ra.xml) and restart the server. This exception is considered not retriable, likely due to a modelling mistake.at com.bea.wli.sb.transports.jca.binding.JCATransportOutboundOperationBindingServiceImpl.invokeOneWay(JCATransportOutboundOperationBindingServiceImpl.java:114)at com.bea.wli.sb.transports.jca.JCATransportEndpoint.sendOneWay(JCATransportEndpoint.java:191)

Solution:

Even though the references in the OSB project were correct, the references in the actual .JCA file were not. I’m not sure why the original developer had incorrect references in the actual .JCA file, but OSB 11.1.1.4 was more tolerant and did not seem to care. OSB 11.1.1.7 does care.

1. Ensure that the highlighted references below are valid and correct in your .JCA file:
<?xml version="1.0" encoding="UTF-8"?><con:jcaEntry xmlns:con="http://www.bea.com/wli/sb/resources/config">    WRONG: <con:jca><![CDATA[<adapter-config name="Order" adapter="Database Adapter" wsdlLocation="Order.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
    RIGHT: <con:jca><![CDATA[<adapter-config name="Order" adapter="Database Adapter" wsdlLocation="ShipmentOrder.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">

  <connection-factory location="eis/DB/EBS" UIConnectionName="InstanceDetails" adapterRef=""/>  <endpoint-interaction portType="Order_ptt" operation="insert">    <interaction-spec className="oracle.tip.adapter.db.DBWriteInteractionSpec">      <property name="DescriptorName" value="Order.OmOrder"/>      <property name="DmlType" value="insert"/>      WRONG: <property name="MappingsMetaDataURL" value="Order-or-mappings.xml"/>
      RIGHT: <property name="MappingsMetaDataURL" value="ShipOrderToplink.xml"/>
      <property name="DetectOmissions" value="true"/>      <property name="GetActiveUnitOfWork" value="false"/>    </interaction-spec>  </endpoint-interaction> </adapter-config>]]></con:jca>    <con:jcaDependency>        WRONG: <con:wsdlRef wsdlLocation="ShipOrder.wsdl" ref="OrderConfirmProvABCSImpl/WSDL/ShipmentOrder"/>
        RIGHT: <con:wsdlRef wsdlLocation="ShipmentOrder.wsdl" ref="OrderConfirmProvABCSImpl/WSDL/ShipmentOrder"/>
        WRONG: <con:toplinkRef toplinkFile="ShipOrder-or-mappings.xml" ref="OrderConfirmProvABCSImpl/Toplink/ShipOrderToplink"/>
        RIGHT: <con:toplinkRef toplinkFile="ShipOrderToplink.xml" ref="OrderConfirmProvABCSImpl/Toplink/ShipOrderToplink"/>
    </con:jcaDependency></con:jcaEntry>


Applicable Versions:

  • Oracle Service Bus (OSB) 11g (11.1.1.7) 

 

Sunday, August 10, 2014

"java.lang.OutOfMemoryError: PermGen space" when starting SOA Suite 11g with Java 7

Problem:

When starting up SOA Suite 11g running Java 7, you may experience multiple errors in the .out file:
<Aug 9, 2014 9:26:32 PM EDT> <Critical> <WebLogicServer> <BEA-000386> <Server subsystem failed. Reason: java.lang.OutOfMemoryError: PermGen space
Exception in thread "Timer-1"Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "Timer-1"Exception in thread "[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'"Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'"Exception in thread "[STANDBY] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'"Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "[STANDBY] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'"

<Aug 9, 2014 10:18:10 PM EDT> <Error> <HTTP> <BEA-101216> <Servlet: "CoordinatorPortTypeServlethttp" failed to preload on startup in Web application: "wls-wsat.war".java.lang.OutOfMemoryError: PermGen space        at java.lang.ClassLoader.defineClass1(Native Method)        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)        Truncated. see log file for complete stacktrace>

Solution:

The PermGen needs to be increased if you are running SOA Suite 11g on Java 7 (e.g., java.runtime.version = 1.7.0_60-b19).

1. Log in to the WebLogic Server Administration Console

2. Navigate to "Server > soa_server1 > Configuration > Server Start"

3. Under the 'Arguments' field, add the following:
-XX:PermSize=1024M -XX:MaxPermSize=1024M
4. Save, apply changes, and restart the SOA server.


Applicable Versions:

  • Oracle WebLogic Server 11g (10.3.x)
  • Oracle SOA Suite 11g (11.1.1.x)
  • Java 7 (1.7.x)


References:




Thursday, July 24, 2014

Limit number of retained log files in WebLogic Server 11g

There are numerous log files in Oracle WebLogic Server 11g and ideally what you would want to do is ensure that the number of rotated log files are controlled. For example, you may have already taken the steps to rotate the log files as they grow to a certain size. This is a great first step, but what you also want to do is control how many of those rotated files you wish to retain, otherwise your file system will likely get filled up over time if you don't manually delete them.

1. Log in to the WebLogic Server Administration Console

2. Repeat the instructions below for all managed servers

3. Navigate to "Server > (managed server) > Logging > General"

4. Set the following values:
Limit number of retained files: Enabled
Files to retain: 30

Minimum severity to log: Warning

Severity Level (Log File): Warning

Severity Level (Standard Out): Error

Severity Level (Domain Log Broadcaster): Error

Severity Level (Memory Buffer): Error
5. Navigate to "Server > (managed server) > Logging > HTTP"

6. Set the following values:
Limit number of retained files: Enabled
Files to retain: 30
7. Navigate to "Server > (managed server) > Logging > Data Source" (new in option in current releases)

8. Set the following values:
Limit number of retained files: Enabled
Files to retain: 30
9. For domain level logging properties, navigate to "soa_domain > Configuration > Logging"

10. Set the following values:
Limit number of retained files: Enabled
Files to retain: 30

Applicable Versions:
  • Oracle WebLogic Server 11g (10.3.x)


Friday, June 20, 2014

BEA-387026 encountered after upgrading to OSB 11g (11.1.1.7)

Problem:

When you have an OWSM policy attached to an OSB 11g proxy service, this typically works fine. But after upgrading to OSB 11g PS6 (11.1.1.7), you may experience the following error in the logs:
<Jun 19, 2014 6:34:21 PM EDT> <Error> <OSB Security> <BEA-387026> <An internal web service security error occurred [error-code: InternalError, message-id: 5630667683963361529-6593aaf0.146aae8a55c.-4741, proxy: SalesOrder/ProxyService/SalesOrder, target: null, operation: null]--- Error message:nulljava.lang.NoSuchMethodError: com/bea/wli/sb/security/wss/WssInboundContext.setRequestMessage(Ljavax/xml/soap/SOAPMessage;Ljava/lang/Class;Ljavax/xml/soap/MessageFactory;)V        at com.bea.wli.sb.security.wss.wsm.WsmInboundHandler.processRequest(WsmInboundHandler.java:181)        at com.bea.wli.sb.security.wss.WssHandlerImpl.doInboundRequest(WssHandlerImpl.java:228)        at com.bea.wli.sb.context.BindingLayerImpl.addRequest(BindingLayerImpl.java:291)

Solution:

1. Log in to the WebLogic Server Administration Console

2. Untarget "OWSM Policy Support in OSB Initializer Aplication" from the osb_cluster and AdminServer

3. Shutdown osb_server1, osb_server2, and AdminServer

4. Run these commands on the first node of your cluster (modify directories accordingly):
cd /u01/app/oracle/middleware/user_projects/domains/osb_domain/servers/osb_server1/tmp 
rm -rf * 
cd /u01/app/oracle/middleware/user_projects/domains/osb_domain/servers/osb_server1/cache 
rm -rf *
5. Run these commands on the second node of your cluster (modify directories accordingly):
cd /u01/app/oracle/middleware/user_projects/domains/osb_domain/servers/osb_server2/tmp 
rm -rf * 
cd /u01/app/oracle/middleware/user_projects/domains/osb_domain/servers/osb_server2/cache 
rm -rf *
6. Startup Admin_Server, osb_server1, osb_server2

7. Target "OWSM Policy Support in OSB Initializer Aplication" from osb_cluster and AdminServer

8. Shutdown osb_server1, osb_server2, and AdminServer

9. Run these commands again on the first node of your cluster (modify directories accordingly):
cd /u01/app/oracle/middleware/user_projects/domains/osb_domain/servers/osb_server1/tmp 
rm -rf * 
cd /u01/app/oracle/middleware/user_projects/domains/osb_domain/servers/osb_server1/cache 
rm -rf *
10. Run these commands again on the second node of your cluster (modify directories accordingly):
cd /u01/app/oracle/middleware/user_projects/domains/osb_domain/servers/osb_server2/tmp 
rm -rf * 
cd /u01/app/oracle/middleware/user_projects/domains/osb_domain/servers/osb_server2/cache 
rm -rf *
11. Startup Admin_Server, osb_server1, osb_server2


Applicable Versions:

  • Oracle Service Bus (OSB) 11g (11.1.1.7)


References:




Thursday, June 19, 2014

Unable to retrieve composite detail in EM Fusion Middleware Control

Problem:

When logging in to the Oracle Enterprise Manager 11g Fusion Middleware Control console to view the details of the SOA composite, you might receive the following error when you click on the composite:
Unable to retrieve composite detail.
The composite X is not available. This could happen because either the composite has been undeployed or soa-infra has not yet loaded this composite.

The soa_server1.out log file will show this error:
<Jun 19, 2014 12:00:23 PM EDT> <Error> <Default> <J2EE JMX-46336> <MBean operation access denied.
  MBean: oracle.soa.config:name=soa-infra,j2eeType=CompositeLifecycleConfig,Application=soa-infra
  Operation: getDefaultComposite(java.lang.String)
 
Detail: Access denied. Required roles: Admin, Operator, Monitor, executing subject: principals=[]
java.lang.SecurityException: Access denied. Required roles: Admin, Operator, Monitor, executing subject: principals=[]
        at oracle.as.jmx.framework.wls.spi.security.WLSMBeanSecurityHelper.isInWlsGlobalSecurityRoles(WLSMBeanSecurityHelper.java:245)
Resolution:

Even though the stack trace above claims otherwise, in Oracle SOA Suite 11g (11.1.1.7), you must grant the user 'Administrators' role to the user. Could be a bug.


Applicable Versions:

  • Oracle SOA Suite 11g (11.1.1.7.0)

Monday, May 26, 2014

Adam Savage at Collaborate 14

Adam Savage, best known as the co-host of "MythBusters" on the Discovery Channel, appeared at Collaborate 14 in Las Vegas as one of the Keynote Speakers on Tuesday, April 9th. Adam is also a longtime special-effects artist, fabricator, model maker and general dreamer-upper who has worked on films such as Galaxy Quest and the Matrix sequels as well as Episodes I and II of the Star Wars series.



In his presentation, he spoke mainly on the fundamental ideas many people have about both art and science, how the two subjects are similar and why the two have been twin propellers pushing us forward as a species. Adam believes that art and science are more alike than people originally perceive, that both subjects are expressed in ways which are unique and thought provoking, and they are both a reflection of our progress as a species. He compares the two, saying there are high and low points with each, and somewhere in the middle is where we usually place ourselves. Adam stressed that nothing is too obscure or beyond our understanding. Art and science are very much a part of who we are as people and a society, and continued knowledge of both is the only way we can actively improve our way of life. Adam explained how art is a direct response to what happens in the science world, and that they work hand in hand for us to explain who we are and what we are doing, and the more self generating ideas you come up with the more you can come up with. He encouraged the audience to pay attention to patterns, participate and question everything. 

Closing his hour, he answered questions in length about his time on "Mythbusters" and the relationship he has with the co-star Jamie Hyneman. He explains that their differences help their scientific process by pushing their ideas forward until they have covered every angle and every possible outcome. "Mythbusters" is the perfect example of how working as a team helps to develop the best practices and outcomes. He warns that science is still unpredictable, and it is difficult to eliminate every variable in every situation. He describes the approach he has to science, looking at it from different perspectives until it makes sense in his own head, a practice he learned from watching his father paint. This process helps him respect the importance of working as a team and collaborating together.



Saturday, May 17, 2014

Considering speaking at UKOUG Tech 14? Why I travel overseas to attend UKOUG every year

I have been traveling to attend the UKOUG Tech Conference every year for the past 3 years. Not only is this at my own expense, there is lost income and time away from family to travel internationally from the United States to attend the event.


Why do I do it? It's simple.
  • Presentations are top-notch. Less sales-centric and more technology focused. Much preferred over Oracle OpenWorld.
  • I try to present as much as I can. I love sharing my experiences with others and the registration fee is waived by being a presenter.
  • Individual one-on-one time with Oracle Product Managers/Directors who fly in from the United States, whom I never would have been able to spend time with at Oracle OpenWorld because of the craziness there.
  • Being in December, just a few short months after Oracle OpenWorld, you get to attend many of those presentations.

I am going again this year and submitted 2 abstracts (and hope they are accepted!). Contrary to popular belief, you don't need to be an expert or a seasoned presenter. Simply talk about a single use case, a performance tuning tip you ran into, high level design your team came up with, anything... and in any Oracle technology area.

It's fun. You'll learn. And you'll be surprised at the number of people sharing your experiences and wanting to know more. If you attend, hit me up on LinkedIn and let's meet.


Submit an abstract. Go for free. Learn & network.



 

Monday, April 21, 2014

COLLABORATE14: A week in review

The week of COLLABORATE organized by some of the most dedicated people was filled with many presentations of varying quality. The event took place at the Venetian Palazzo and Sands Expo Center in Las Vegas, Nevada. While there are many uncountable events, people, presentations, and slot machines I am going to just highlight a few of my experiences on my first trip to Las Vegas.

RAC ATTACK!
My first and probably favorite of all the presentations was "RAC Attack!" Provided by the group at racattack.org this session was a hands-on interactive help session for learning how to setup a two node RAC database. As a disclaimer I don't profess or market myself as a DBA, but I do like to have some what of an understanding of the systems that I use even if my useage of them only touches the surface. Setting up this cluster provided a good insight of what DBAs work with on a daily basis. The group provided much help where ever it was needed, but the instructions they had laid out in the first place were very descriptive and helpful. They tried to have us emulate the setup as if we wouldn't have direct access, which is typical in most settings. Often times a Unix/Linux administrator will have done a lot of the beginning work and have approved programs install, appropriate ports opened, and necessary sudoers access provided. In lieu of needing to emulate the Linux Admin role in addition to the DBA role all security was uprooted: firewall disabled and selinux disabled. The group incentivized people to get engaged by awarding attendees with T-Shirts and at the end providing those who had made it the furthest with prizes. Overall I would call it a rewarding experience, this helped me understand what my colleagues in the DBA role deal with on a daily basis as well as provided a good insight into some of the workings of the Oracle Database product.

More updates may appear here as time progresses.



Tuesday, April 15, 2014

My failed Google Glass experience

At the Collaborate 14 conference, @hdost lent me his Google Glass to try out for a bit.

AHMED: Okay Glass. Call John Doe. (I tried someone I knew was in his address book.)

GOOGLE GLASS: (Nothing happened.)

AHMED: (I see a menu that is now giving me options of what to say.)

AHMED: Okay Glass. Make a call.

AHMED: Hey Harold, it says "Mom" here in the dropdown.

GOOGLE GLASS: (Starts dialing Mom.)

AHMED: Cancel!

AHMED: Google Glass cancel!

AHMED: Okay Glass, cancel call!!!

Fortunately, Harold quickly ended the call from his phone. It would appear I need a little more practice before trying it out in the real world!

I thought I was cool until I accidentally started dialing Harold's mom


Monday, April 14, 2014

Harold Dost III now an Oracle ACE Associate

Harold Dost III, Senior Consultant at Raastech, is now an Oracle ACE Associate!


Becoming a member of the Oracle ACE Program highlights an individual's excellence and technical proficiency. Harold joins an elite group of about 460 individuals, including Raastech's Ahmed Aboulnaga (Oracle ACE), to be recognized as Oracle enthusiasts and advocates. Harold's impressive credentials, 6+ years of experience working in the Oracle community, and enthusiasm to contribute on higher levels are qualities that validate his merit in becoming an Oracle ACE Associate. Congratulations Harold!

Anyone in the Oracle Technology and Applications communities is eligible to apply for consideration, or nominate someone, for one of the following tiers: Oracle ACE Associate, Oracle ACE, or Oracle ACE Director.

Harold can be found on Twitter at @hdost.


Oracle ACE Program:
http://www.oracle.com/technetwork/community/oracle-ace/index.html


"Crazy or Courageous?": Impressive C-level presentation on the importance of branding and selling a project

Last week, while attending Collaborate 14 in Las Vegas, one of the sessions I attended was Crazy or Courageous? Lessons Learned From Making it Happen by Patrick Ott from Amway. Patrick shared his experience during the first global implementation of Oracle E-Business Suite at Amway across 31 European markets. This was a C-level presentation, targeting managers and especially managers outside of IT.

Patrick Ott, Operations Directory, Amway

* Disclaimer though. Raastech, the company I work for, currently supports Amway in a consulting capacity, and I have personally met Patrick in passing several times over the course of the project but have not directly worked with him.

Patrick talked about the challenges of selling the Oracle E-Business Suite solution to company executives, employees, and their customers. The job was made more challenging after what was considered an unsuccessful rollout of a similar solution several years earlier.

Here are a few personal takeaways from the presentation.

Selling to Upper Management

To get their attention, you have to convince the executives and the board that they're either sitting on a gold mine... or about to fall off a cliff.

The Spinning Plates Example

The project management team sometimes felt like the guy trying to keep the spinning plates balanced, always jumping back and forth making sure when things appear that they're about to collapse, bringing them back on track.



A Single Dashboard Slide

Project statuses to the executives were kept under 5 slides. The main project dashboard slide was in fact one page, depicted very simply and in easy to understand graphs, at the expense of detail obviously. By doing so, it allowed management to drill deeper into each of the status areas by asking questions. This level of interactivity could not have been achieved going through a 50 slide project update.

Branding a Project

How can you get everyone to feel passionate and proud about their involvement in a project? The same way people pay ridiculous amounts for Starbucks coffee instead of the generic brand. It's partly about branding. It was not the rebranding of the "ATLAS" project, as it's called, that made the project successful, but it was one of the aspects of convincing the executives, board, employees, and customers that things this time were different... which they were.

Old Logo
New Logo

Overall, it was a very good presentation by a very competent presenter who clearly understands the challenges it takes to make the rollout of a global enterprise project successful. His examples were impressive and completely relatable, highlighting how project success is not always about technology, but about people as well.