Tuesday Sep 01, 2015

Using Orachk to Clean Up Concrete Classes for Application Continuity

As I described in the blog Part 2 - 12c Database and WLS - Application continuity, Application Continuity (AC) is a great feature for avoiding errors to the user with minimal changes to the application and configuration. Getting rid of any references to Oracle concrete classes is the first step.

Oracle has a utility program that you can download from MOS to validate various hardware, operating system, and software attributes associated with the Oracle database and more (it’s growing). The program name is orachk. The latest version is and starting in this version, there are some checks available for applications running with AC.

There is enough documentation about getting started with orachk so I’ll just say to download and unzip the file. The AC checking is part of a larger framework that will have additional analysis in future versions. This article focuses on the analysis for Oracle concrete classes in the application code.

AC is unable to replay transactions that use oracle.sql deprecated concrete classes of the form ARRAY, BFILE, BLOB, CLOB, NCLOB, OPAQUE, REF, or STRUCT as a variable type, a cast, the return type of a method, or calling a constructor. See New Jdbc Interfaces for Oracle types (Doc ID 1364193.1) for further information about concrete classes. They must be modified for AC to work with the application. See Using API Extensions for Oracle JDBC Types for many examples of using the newer Oracle JDBC types in place of the older Oracle concrete types.

There are three values that control the AC checking (called acchk in orachk) for Oracle concrete classes. They can be set either on the command line or via shell environment variable (or mixed). They are the following.

Command Line Argument

Shell Environment Variable


–asmhome jarfilename  


This must point to a version of asm-all-5.0.3.jar that you download from http://asm.ow2.org/.

-javahome JDK8dirname


This must point to the JAVA_HOME directory for a JDK8 installation.

-appjar dirname


To analyze the application code for references to Oracle concrete classes like oracle.sql.BLOB, this must point to the parent directory name for the code. The program will analyze .class files, and recursively .jar files and directories. If you have J2EE .ear or .war files, you must recursively explode these into a directory structure with .class files exposed.

This test works with software classes compiled for Oracle JDBC 11 or 12.

When you run the AC checking, the additional checking about database server, etc. is turned off. It would be common to run the concrete class checking on the mid-tier to analyze software that accesses the Oracle driver.

I chose some old QA test classes that I knew had some bad usage of concrete classes and ran the test on a small subset for illustration purposes. The command line was the following.

$ ./orachk -asmhome /tmp/asm-all-5.0.3.jar -javahome /tmp/jdk1.8.0_40 -appjar /tmp/appdir

This is a screen shot of the report details. There is additional information reported about the machine, OS, database, timings, etc.

From this test run, I can see that my one test class has five references to STRUCT that need to be changed to java.sql.Struct or oracle.jdbc.OracleStruct.

Note that WLS programmers have been using the weblogic.jdbc.vendor.oracle.* interfaces for over a decade to allow for wrapping Oracle concrete classes and this AC analysis doesn’t pick that up (there are five weblogic.jdbc.vendor.oracle.* interfaces that correspond to concrete classes). These should be removed as well. For example, trying to run with this ORACLE extension API and the WLS wrapper

import weblogic.jdbc.vendor.oracle.OracleThinBlob;

OracleThinBlob blob = (OracleThinBlob)rs.getBlob(2);
java.io.OutputStream os = blob.getBinaryOutputStream();

on a Blob column using the normal driver works but using the replay driver yields

java.lang.ClassCastException: weblogic.jdbc.wrapper.Blob_oracle_jdbc_proxy_oracle
$1OracleBlob$$$Proxy cannot be cast to weblogic.jdbc.vendor.oracle.OracleThinBlob

It must be changed to use the standard JDBC API

java.sql.Blob blob = rs.getBlob(2);
java.io.OutputStream os = blob.setBinaryStream(1);

So it’s time to remove references to the deprecated Oracle and WebLogic classes and preferably migrate to the standard JDBC API’s or at least the new Oracle interfaces. This will clean up the code and get it ready to take advantage of Application Continuity in the Oracle database.

The ORAchk download page is at https://support.oracle.com/epmos/faces/DocumentDisplay?id=1268927.2 .

Thursday Aug 27, 2015

New Partner Solutions on WebLogic and the Oracle Database Appliance

With the latest release of WebLogic on ODA, which now supports the X5-2 hardware, we have come to a new chapter. Oracle partners around the world have been developing customized solutions using WebLogic on ODA for years now. Many of them started with the wizard-driven templates produced by the Oracle WebLogic engineering team, and then went on to design their own customized solutions by expanding on and embellishing these templates for their customers' unique needs.

It became obvious that, to best support our existing users, and to give new customers more immediate access to the tools and resources they need for success, we would formalize this direction by shifting resources to enable Oracle WebLogic 12c specialized partners to rapidly gain expertise and traction in this arena.

To this end, we are publishing a new whitepaper how-to guide, Running Middleware Applications on ODA Machines, that can be used by partners or end users to speedily deploy a highly available platform on which to run Java applications. We are also announcing that this latest release of the WebLogic templates is also our final release. However, we will continue to encourage and support customer and partner led development efforts.

Attend a webinar on September 4th at 10am PT, to better understand what is in the latest release of WebLogic on ODA, and to hear directly from one of our expert partners on some of the solutions currently offered on ODA. http://ouweb.webex.com, Session Number: 599 716 170. Dial in: 877-814-3159 or 706-634-9616; Passcode: 210550.

Thursday Aug 13, 2015

WebLogic Server 12.1.3 Developer Zip Update 3

WebLogic Server 12.1.3 Developer Zip Update 3 has just been posted to OTN for download. 

Update 3 contains the same set of bugs fixes in the WebLogic Server Patch Set Update, providing developers who use the developer zip distribution with a version that corresponds to the latest version of WebLogic Server 12.1.3 used for production.

Download page:


The README file for Update 3 provides details of the updates:


Wednesday Jul 29, 2015

WebLogic Update @ Voxxed Days Istanbul

It's relatively rare Java focused conferences have clearly WebLogic centric sessions. This is understandable as conference organizers must carefully balance between education, vendor-neutrality, sharing useful information and outright sales pitches. The distinction is very tenuous and historically frequently abused at Java conferences. As a result Java conference organizers (and attendees) often choose to err on the side of caution and avoid content focused on commercial products (note that while WebLogic is beyond a doubt a commercially licensed product developers can use it freely on their own local machines with an OTN license). An unfortunate side effect of this problem is that many developers remain woefully unaware of the changes happening in mission critical bits of industry infrastructure such as WebLogic. The exception to this unfortunate situation is events like Oracle OpenWorld and other Oracle technology centric conferences where WebLogic is far better represented.

For these reasons it was a breadth of fresh air to be able to deliver a brief WebLogic centric session at Voxxed Days Istanbul 2015. I am so grateful to the organizers for lending me the benefit of the doubt and recognizing the distinction between selling and informing current/prospective users about important technological changes that can help their organizations. Titled "What's New in WebLogic 12.1.3 and Beyond", the talk essentially covers the very important hard work that we have already done in WebLogic 12.1.3 including supporting some of the most critical Java EE 7 APIs as well as the fundamental changes coming soon in WebLogic 12.2.1 including full Java EE 7 platform support. Below is the slide deck for the talk (click here if you can't see the embedded slide deck.):

If you have not yet taken a look at WebLogic 12.1.3 and the road map for 12.2.1, the deck should offer a quick way to do so. Here is the abstract for the talk to give you better context:

WebLogic 12.1.3 was released about a year ago. It brings a large set of changes including support for some key new Java EE 7 APIs such as WebSocket, JAX-RS 2, JSON-P and JPA 2.1, support for Java SE 8, WebSocket fallback support, support for Server-Sent Events (SSE), improved Maven support, enhanced REST administration support, Oracle Database 12c driver support and much, much more. In this session we will take a detailed tour of these features. In addition we will also cover updated WebLogic support in the Oracle Cloud, the new Oracle public Maven repository, using WebLogic with Arquillian for testing and well as official Docker support for WebLogic. Towards the end of the session we will discuss what's coming in WebLogic 12.2.1 this year including full support for Java EE 7, multi-tenancy and more.

Besides the brief WebLogic talk I also covered Java EE 7 and Java EE 8 at Voxxed Days Istanbul as well as the Istanbul and Ankara JUG. More details of the event are posted on my personal blog.

Friday Jul 17, 2015

Accessing WebLogic Logs via REST

One of the most significant changes in the WebLogic 12.1.3 release is improvements in the REST management interface. Oracle ACE Director and WebLogic expert Dr. Frank Munz does a very nice job summarizing the changes on his blog. The REST management capability is really quite a nice addition to the existing DevOps oriented capabilities such as WLST and of course the admin console. One of the very interesting things you can do via the REST management interface in WebLogic 12.1.3 is easily access all WebLogic logs. Dr. Frank Munz explains nicely step by step how to do this via another excellent blog entry well worth a read.

The best way to learn the details of the REST management capabilities is of course always the WebLogic documentation.

Tuesday Jun 30, 2015

Oracle Cloud Application Foundation Innovation Awards Now Open for Nominations!

Is your organization using Oracle Cloud Application Foundation that includes Oracle WebLogic Server, Oracle Coherence and Oracle Tuxedo to deliver unique business value? The Innovation Awards awards honor our customers and partners for their cutting-edge solutions. Winners are selected based on the uniqueness of their business case, business benefits, level of impact relative to the size of the organization, complexity and magnitude of implementation, and the originality of architecture.

The 2015 awards will be presented during Oracle OpenWorld 2015, October 26-29, in San Francisco.

Submit your nomination for WebLogic/Coherence/Tuxedo by July 31!

Award winners receive:

  • Oracle Fusion Middleware Innovation Award for WebLogic trophy
  • One free pass to Oracle OpenWorld 2015
  • Priority consideration for placement in Profit magazine, Oracle Magazine, or other Oracle publications and press releases
  • Oracle Fusion Middleware Innovation logo for inclusion on your own website and/or press release   

All nominees receive consideration for:

  • Participating in OpenWorld panels and speaking opportunities
  • Featured Customer Success Story on Oracle.com
  • Placement in Profit magazine and/or Oracle Magazine
  • Placement in an Oracle press release or Oracle Fusion Middleware podcast
Nomination deadline: 5:00 p.m. PT July 31, 2015
All nominated solutions should be in production or in active pilot phase

For additional information, please email Innovation-Middleware_us@oracle.com

Thursday Jun 18, 2015

Managing Logs in WebLogic

Logging is your first line of defense in terms administering, debugging and monitoring any part of the data center and especially the application server. WebLogic generates a number of very helpful log files for that reason. In addition WebLogic also provides ways to robustly manage these log files in terms of tuning things like log rotation and filtering. Ahmed Aboulnaga introduces some of these capabilities in a recent article on OTech Magazine (his article is mostly focused on the admin console).

The most detailed and up-to-date way to learn about WebLogic logging is always of course the WebLogic documentation. For example a couple of important logging aspects the article does not get into include configuring the logs themselves as well as easily viewing the logs through the WebLogic console.

Tuesday Jun 09, 2015

Your Spring application takes longer to deploy? Think again!

Uday Joshi of the WebLogic Team was recently asked to understand why a large Spring based application took longer to deploy on WebLogic than on Tomcat. And to do that, Uday only had one constraint, i.e. he was not given access to that Spring application! The only thing Uday had at his disposal was the deployment-time thread dumps of that application, nothing else.

In this detailed article, Uday describes how he mimicked the 'suspicious' application to understand what was going on. He also shares some of his findings and some recommendations like using filtering classloader. This article is based on a large Spring application but those recommendations also apply to any large application. 

Friday Jun 05, 2015

A Gentle Introduction to the WebLogic Diagnostic Framework (WLDF)

The WebLogic Diagnostic Framework (WLDF) is a powerful feature that has been around since WebLogic 9. It is an extremely robust way of live monitoring and diagnostics for the server, the underlying JVM, deployed applications and configured resources. Few if any other Java application servers can match the capabilities offered by WLDF. If you using WebLogic in production and don't know about WLDF, you are doing yourself a serious disservice.

Because of the power and flexibility offered by WLDF, it is not trivial to pick up and for some can be daunting. Fortunately Mike Croft of Oracle partner C2B2 consulting can help us out. He wrote up a very nice series of blog entries as a gentle introduction to WLDF. He provides a high level overview and discusses watches, notifications and the monitoring dashboard. The definitive way to learn about WLDF is of course always the latest WebLogic documentation :-).

Friday May 29, 2015

Your Opinion Wanted - What Would You Like to See in OTN Virtual Summits?

If you don't know about the OTN Virtual Technology Summit yet, you are doing yourself a serious disfavor. The summit is a set of free online events covering various technical topics such as Java SE and Java EE but also WebLogic, Coherence, Middleware, Database and so on. Each topic is presented by a subject matter expert coming either from Oracle or from the community (Java Champions, Oracle ACEs and so on). During each session a live chat lets participants ask questions and clarifications on the presented subject. The summit is held four time a year!

Now you can chime in to tell us exactly what you would like to see in terms of middleware content in the summit. Of course we not-so-secretly hope you will ask for more Java EE, WebLogic or Coherence content! You can voice your opinion at any time using this public page on the Oracle Community site. Beyond simply asking for a topic, you are also most welcome to nominate yourself or someone else you know as a speaker. It's a great way of sharing your knowledge and getting some recognition, so don't be shy!

Monday May 18, 2015

WLS Tip: Getting started with Arquillian on WebLogic Server

Arquillian is a popular open-source testing framework for Java EE containers. In this short video, Phil Zampino of the Oracle WebLogic Server Development Team shows how to get started with Arquillian to test applications running in WebLogic Server. For a more details on using Arquillian with WebLogic, you can then check this article.

For your convenience, you can also download this archive that contains the test application and the configuration files (pom.xml & arquillian.xml) used in the video.

Wednesday Apr 15, 2015

WLS Tip: Installing WebLogic with Chef

Chef is a popular open source infrastructure automation framework that has been popularized with the whole DevOps movement. In a nutshell, Chef has the notion of Recipe and Cookbook. A Recipe is written using a Ruby based DSL to describe how to install and configure software(s) on a host. And as the name suggest, a Cookbook is a collection of related Recipes.

This article explains how to create a simple WebLogic Cluster (on a VM) with two Managed Servers using Chef. The Cookbook described in the article can obviously be used as the basis for more advanced scenarios involving WebLogic.

Thursday Apr 02, 2015

An Introduction to WLST Script Profiles

In case you are not familiar with WLST (the WebLogic Scripting Tool), it is a powerful scripting runtime for administering WebLogic domains. Jython is used as the scripting language. Although other application servers now boast similar capabilities, WebLogic was one of the earliest to innovate this feature around 2006 with WebLogic 9. In fact, WLST maintains the most impressive set of features compared to competing offerings.

WLST is of course just one way of administering WebLogic. You can also work with WebLogic domains using Ant, Maven, the command line and of course the user-friendly admin console depending on your needs and preferences. WLST is particularly useful for automating entire deployment environments or complex administration scenarios. Matt Brasier of C2B2 Consulting (an Oracle partner) recently did an excellent talk on WLST. The slide deck for his talk is embedded below:

We also recently caught up with Peter Bowers, a key developer on the WebLogic team about WLST. He talked to us about the WLST script profile feature, including some cool sample code and a demo. Here's the video with Peter:

The best place to learn more about WLST is none other than the excellent latest WebLogic docs on the topic.

Monday Mar 16, 2015

OpenWorld 2014: WebLogic Cloud Approaches

By Ancy Dow, Oracle Tech Cloud Account Strategist [Another OpenWorld session that Ancy found relevant and wanted to share with all of us.]

According to a recent ComputerWorld Survey, nearly 90% of IT executives now want to implement cloud solutions. But what is the best cloud strategy for your organization—private, public, or hybrid? Senior Product Marketing Director Ayalla Goldschmidt and Product Management Vice President Mike Lehman share best practices on choosing a pragmatic cloud approach for your organization’s implementation of WebLogic Server, as customers leveraging WebLogic Server now have unprecedented options when architecting an enterprise cloud strategy.

WebLogic in the Cloud – Oracle’s Investment Strategy

Typically, we see three types of customers really interested in moving to the cloud. First are developers who look to move to the cloud for faster provisioning and working with Java in a very lightweight fashion. Secondly, many customers are IT operations-oriented individuals who seek to shift their capital expenditures, and instead pay a far lower subscription cost for a cloud provider to take care of everything. Finally, lines-of-businesses individuals building seasonal or non-mission critical applications don’t want to go through the long development cycle of building out an infrastructure and supporting environments.

To meet all these needs, Oracle’s Cloud strategy is to deliver a flexibility of deployment choices, with unparalleled ease of use. The on-premise private cloud is the most straightforward path to cloud and Oracle has currently invested significantly in this area to bring cloud capabilities into the WebLogic platform. The second investment area is bringing WebLogic to the public cloud through the Java Cloud Service (JCS), with options such as automated patching and tooling. The third and final investment area is partnerships we’ve established with Microsoft Azure, Amazon, Verizon Terremark, and even more vendors coming in the future. 

A Hybrid Cloud Model

Given all these options, should you mix your workloads between private and public? Very sensitive customer or employee data that needs to meet geopolitical boundaries should be kept in an on-premise private cloud. On the opposite end, customers who pursue public cloud entrust security in the hands of the cloud vendors, prioritizing faster response times and extreme agility within competitive environments. With a hybrid approach, customers host mission-critical applications in-house, but also look opportunistically for places in which public cloud could make more sense. With this strategy, customers meet compliance and security requirements where needed, but can also learn and seek to expand their public cloud footprint over time for better resource utilization, cost savings, and flexibility. 

Why Choose Oracle Cloud?

Oracle is uniquely positioned as a cloud provider because of its ease of portability from one cloud solution to the other. From a private cloud perspective, investments center around WebLogic Server, Coherence with in-memory caching, and Enterprise Manager as a set of high availability technology for provisioning and managing customers’ environment lifecycle. Customers can take the latest versions of these tools—WebLogic Server 12c—to get a cloud environment up and running from an operational and developer-friendly perspective. This same exact set of products is available through a self-service, self-managing, public cloud portal with Java Cloud Service. 
The full 45-minute session offers further insights on criteria that can help you create a framework for decision making around private versus public cloud. More information is also available in the Computerworld cloud survey. Download the survey report from http://www.oracle.com/goto/computerworld. Our early adopters have already been able to reduce their implementation time for new applications from months to weeks, and we look forward to making that a possibility for you as well.

With this blog post, we end our series on OpenWorld Cloud Application Foundation sessions. Hope you enjoyed it. 

Monday Mar 09, 2015

WLS JDBC Driver Patching

The handling of Oracle driver jar patches is complicated but getting sorted out. This article tries to gather the information in one place with pointers to more details.  There are a few patches that are still not available, marked as TBA (To Be Available) in the tables below.  As these files become available, this page will be updated.

WLS 10.3.6, 12.1.1, and 12.1.1 shipped Database jar files.  However these are non-standard versions of the jars with additional bug fixes and enhancements to support WLS.  That means that you can't just drop in an patch or upgrade to using standard released jar files. Although support is required to provide patches as needed, it will be difficult and the recommendation is to upgrade to a special patch that contains and all of the patches and enhancements in the database jar files shipped with WLS. It's further complicated because WLS started using the Oracle Universal Installer in 12.1.2, requiring a different patch format.

WLS 10.3.6, 12.1.1, 12.1.2, and 12.1.3 also support running with Oracle Database 12c client jar files. For WLS 10.3.6 through 12.1.2, the jar files must be manually installed; there is no installer or patch to automate this upgrade. To get patches, you must be running with the Database jar files; WLS patches will not be generated for the Database jar files. WLS 12.1.3 ships with a pre-release version of Database driver jar files and a patch will be available to upgrade to the production version of these files. After this upgrade, standard database Oracle patch files will work as expected for WLS 12.1.3 (and WLS 12.1.2 with a manual upgrade to database jar files).

Patching the installed Oracle Driver

WLS Release

Oracle Driver Install

Database Jar

Patch Strategy


10.3.6 WLS patch


12.1.1 WLS patch


12.1.2 opatch

Patch Request 18557114 for bug 19477203


Pre- opatch to bring up to shipping; standard opatch for additional bug fixes

Patch 20741228: 12.1.3 WLS UPGRADE TO JDBC RELEASE

Running with the Database 12c Driver

WLS Release installation

Database Jar Patch Strategy

Documentation for Installation
Documentation for patching


Manual installation of WLS patch



Manual installation of WLS patch



Manual installation of opatch


Standard patch procedure


Pre- installed; Patch to bring up to shipping opatch


Patch 20741228: 12.1.3 WLS UPGRADE TO JDBC RELEASE

Standard patch procedure

On a related topic, updating non-Oracle driver jar files is covered by the following note.


This includes the DataDirect and MySQL drivers that are shipped in the kit. The jar file is backed up and removed, the new file installed, and the CLASSPATH adjusted if the jar name changes.

You'll notice that releases earlier than WLS 10.3.6 are not discussed.  For releases earlier than WLS 10.3.4, they depend only on the ojdbcN.jar file.  It's possible that they will work with the jar file but that hasn't been certified and they are not still in error correction support.  For WLS 10.3.4 or 10.3.5, it depends not only on a specific ojdbc jar file but also ONS/UCP jars that have the package names renamed.  They will likely not work correctly with the jar file (certainly not Active GridLink).  Since these releases ended error correction support in May 2012, you will need to upgrade to WLS 10.3.6 or 12.1.x to use later driver jar files.


The official blog for Oracle WebLogic Server fans and followers!

Stay Connected


« November 2015