Monday Jun 30, 2014

Oracle WebLogic Server 12.1.3 Whitepaper - Developing with WebLogic Server

One of the most significant areas of investment in WebLogic Server 12.1.3 has been in developer productivity and API updates, as I summarized in my blog from last week.   However, a brief summary is typically not enough for developers who want a more detailed description of the improvements we have delivered.   And although product documentation contains all of the relevant updates, sometime it does not capture the overall background on the topic that puts the improvements into context.  

Steve Button from the WebLogic Server product management team has published an excellent whitepaper on OTN - Oracle WebLogic Server 12.1.3 Whitepaper - Developing with WebLogic Server - which provides a detailed description of the new features, along with the background which explains why we delivered the improvements, and the benefits they offer.   The whitepaper covers new WebLogic Server 12.1.3 features in the areas of WebSocket, JSON, JAX-RS, JPA, Server-Sent Events, Maven and more.

If you are a WebLogic Server user looking for a detailed description of the latest development features in WebLogic Server 12.1.3, and how you can leverage them in your applications, this is an excellent resource.   Please take a look!

Thursday Jun 26, 2014

Oracle WebLogic Server 12.1.3 is Released

We're proud to announce that Oracle WebLogic Server 12.1.3 has been released as part of the Cloud Application Foundation and Oracle Fusion Middleware 12.1.3 release as described at the Cloud Application Foundation Blog. Oracle WebLogic Server is the industry's leading application server, providing unparalleled choice for deploying applications in public clouds, on-premise private clouds, engineered systems such as Oracle Exalogic Elastic Cloud, Oracle SPARC SuperClusters, and Oracle Database Appliance systems, and conventional systems.

Oracle WebLogic Server 12.1.3 is a new version release of Oracle WebLogic Server 12c.   It builds on the features provided in WebLogic Server 12.1.2 to improve developer productivity, performance and high availability, and manageability.   It enables you to develop and deliver innovative applications, to meet the application service level requirements for your business, and to manage your application infrastructure efficiently to achieve low total cost of ownership.

For developers we have placed specific focus on enabling development of server applications that support rich client applications running in HTML5 browsers or mobile devices. Such applications typically rely on REST based Web Services, use JSON as the data format for message payloads, and often require dynamic updates between clients and servers. In Oracle WebLogic Server 12.1.3, we have implemented support for selected Java EE 7 APIs including JAX-RS 2.0, Java API for JSON Processing, Java API for WebSocket, and JPA 2.1, to enable and support development of such applications.  We have also delivered related value-added capabilities like support for Server-Sent Events and unique WebSocket emulation capability.

High availability and performance improvements include improvements to Oracle Database 12c integration support - we have bundled the latest version of the Oracle Database 12c driver for ready access to database integration features, and have certified Oracle Database 12c AQ JMS as a Foreign JMS Server within Oracle WebLogic Server.    Innovations to the Oracle WebLogic Server transaction processing subsystem enable elimination of transaction logs in many cases, increasing performance and simplifying distaster recover configuration.   Optimizations for Oracle Exalogic systems include JMS performance improvements, and Cooperative Memory Management to adapt server memory usage based on memory consumption on Oracle Exalogic systems.

Manageability enhancements include improvements to dynamic clusters introduced in Oracle WebLogic Server 12.1.2.   In Oracle WebLogic Server 12.1.3 we support use of whole server migration to provide improved availability for dynamic clusters environments using JMS.    We have expanded our support for REST-based management, adding lifecycle management, application deployment, and datasource configuration support via REST.   We have also made similar improvements to support for Oracle WebLogic Server management in Oracle Fusion Middleware Control.

Finally, Oracle WebLogic Server 12.1.3 is the foundation of the Oracle Fusion Middleware 12.1.3 release, which adds Oracle SOA Suite 12c and other Oracle Fusion Middleware products to the family of products that is supported with Oracle WebLogic Server 12c.  This will make it easy for Oracle WebLogic Server 12.1.3 customers to adopt the latest releases of these products, and will also enable Oracle Fusion Middleware users to take advantage of the latest features in WebLogic Server 12.1.3.  To learn more:

...and look for more information from us in the coming days and weeks.  Thanks!

Indian Government Organization Saves $125,000 with Real-Time Insight for Decision-Making

Chhattisgarh Infotech and Biotech Promotion Society (CHiPS) is run by the government of Chhattisgarh, which became India’s newest and tenth-largest state in November 2000. CHiPS deployed Oracle WebLogic Server Enterprise Edition with Oracle WebCenter products as well as Oracle Web Tier to automate document workflow processes and provide a consistent and transparent decision-making process to meet statutory requirements. It reduced paper and document management costs by US$125,000 in one year, extended visibility for decision-making processes, enhanced collaboration between departments, increased business productivity through anytime-anywhere access to information, and enhanced citizen satisfaction. For more details, read this customer snapshot.

Monday Jun 16, 2014

Detailed Analysis of a Stuck Weblogic Execute Thread Running JDBC Code

The following thread was extracted from a thread dump taken on a JVM instance running WebLogic Server.

In this post I will deconstruct this thread and describe the data it contains and the potential issues it may illuminate.

[STUCK] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)' id=73 idx=0x128 nid=13410 prio=1 alive, in native, daemon Method) Source) Source) Source) Source)









java.sql.DriverManager.getConnection( Source)

This thread is considered Stuck by WebLogic because it's been running for over the time defined in MaxStuckThreadTime (600 seconds by default). Weblogic Server waits for this time to be reached before marking a thread as stuck if the thread is still working after this time.  If you deem that 600 seconds is too long before a running thread is considered stuck then you can change the value of the this parameter using the WebLogic Console (as shown below), or use setMaxStuckThreadTime from the ServerFailureTriggerMBean interface.

An error including BEA-000337 will be logged in the server log file when the thread changes its status to stuck but the server won't take further action on this thread.  However, you might want to investigate why this thread is taking such a long time to process the work assigned to it.

Lets now look at the thread itself.  From its header, you can spot the thread identifier (2 in this example) and the queue where it originated.  The term Self-tuning indicates that the associated thread pool consistently checks the overall throughput to determine if the thread count should change.

id (or tid) is the thread identifier, a unique process-wide number that identifies this thread within the JVM process.  This id is unique but can be reused by another thread once this thread is terminated. 

nid is the OS-level native thread identifier.  It can be used effectively to correlate with high CPU usage threads identified at the OS level (e.g. with Linux watch command).  See Unexpected High CPU Usage with WebLogic Server (WLS) Support Pattern (Doc ID 779349.1) for detailed steps.

idx is the thread index in the threads array.

prio refers to the thread priority, a number inherited from the thread that created it.  You can learn more about thread priorities at Class Thread but basically threads with higher priority are executed in preference to threads with lower priority.

alive refers to the fact that this thread has not ended yet and is still active.  

in native means that the thread uses the operating system's native ability to manage multi-threaded processes.  

daemon indicates that this thread can't prevent the JVM from exiting.

The thread header is accompanied with a full java stack which lists each method and class invoked since the first assignement to the thread up to its most recent action. This thread consists of obtaining a connection to an Oracle database using a Type 4 JDBC driver and then issuing a call but getting no response from the back end database server.  The database failed to respond, and the thread has probably been in the same waiting mode (unchanged and not progressing java stack) for a long time since it's now considered stuck; the most recent invocation being

At this point the back end database needs to be checked to understand why it's not responding to the java thread request.  A starting point could be to query v$session to find potential blocking sessions at the database level.

Blocking sessions occur when one session holds an exclusive lock on an object and doesn't release it.

Needless to say, the communication with the database needs to be confirmed as healthy with none to very limited latency.  Firewall issues should be ruled out as well.  Firewalls could time out idle sockets used by JDBC connections to the database and lead to not closing the socket the JDBC driver is using.


The official blog for Oracle WebLogic Server fans and followers!

Stay Connected


« June 2014 »