30 October 2009

Blogging somewhere else

All Java related posts as well as Oracle / BEA related posts are published under http://ctpjava.blogspot.com.

A new portal update has just been posted there, so check it out!


25 September 2008

Monthly Portal Updates

If you are interested in portals, I just wanted to mention that you might want to subscribe to the following blog as I regularly post a monthly summary on portals there (open source as well as commercial products). As I haven't found such complete summaries on the web, I started to do this at my own:

Other posts covering technologies in general:
This blog continues to focus on BEA / Oracle related topics, mainly around the Middleware product track.

26 August 2008

Oracle WebLogic Server 10g R3 Summary [WLS 10.3]

Since the acquisition of BEA, Oracle releases BEA's WLS for the first time under the new brand Oracle WebLogic Server. Besides the new technical features discussed in this article, also notice the slightly modified name of the product from "10.3" to "10g R3". The codename of this release remained unchanged: ESSEX.
You can download it from this page.
Under Developer Tools at the bottom of the page, you can download the bundle WLS + Workshop 10.3 (even though the .exe file for Windows is still called server103_win32.exe, nothing about bundle or platform).

New Features

Admin Console

  • On-Demand Deployment:
    So far, internal
    applications like the WebLogic Administration Console, the UDDI and its explorer web app have been deployed at startup time (WLS 10.0).
    Now you can specify that such internal applications are only loaded at first access (on demand).
  • Console Configuration Search:
    You can now search for configuration values across the whole WebLogic Domain.
  • Security:
    Now supports SAML2
  • Spring Console:
    The WebLogic Console has been extended to inspect Spring Beans and manage them. As this feature is bundled as Console Extension, you need to enable it first via the preferences tab in the console (spring-console.jar) or you put the JAR file into the autodeploy folder $BEA_HOME\wlserver_10.3\server\lib\console-ext\autodeploy.
  • Guardian:
    Is now included in the WLS but disabled by default. Enable it via Domain Structure (left menu) and then Oracle Guardian Agent (to the right side)
Core Server
  • JDK 1.6 Support:
    A performance boost of about 10% can be expected compared to JDK 1.5 (which is still supported with this release but not recommended as primary choice)
  • Scripting Support:
    Web container supports multiple scripting languages, such as PHP, Groovy, and Ruby. For more information, see JSR 223: Scripting for the Java Platform.
  • Lightweight Server Runtime:
    WLS 10.3 provides two different runtime configurations: WLS or WLX.
    They are select via JAVA_OPTION -DserverType=“wlx” or "wls".
    BEA announced the "micro Service Architecture ( mSA ) " at BEA World 2006 and it seems that it took 'til now to really bring that architecture approach into their products.
    The default mode is WLS which loads all services internally. If WLX is selected, EJB, JMS and JCA is NOT loaded which results in a much smaller memory footprint as well as some performance boost at startup time.
  • FastSwap:
    The reloading of classes by class loaders (hot swapping, hot loading, hot classloading, hot deployment, etc.) without the need of a full web application redeployment is still not fully solved to satisfy today's developer needs that very often complain about the time wasted waiting for a redeployment.
    While JDK 1.5 brought the hotloading feature already but with certain limitations (works as long as class variables and method signatures have not changed), WLS 10.3 eliminates those to a certain extent:

    Limitations: The following changes are not supported by FastSwap:
    - Changing the list of implemented interfaces or the superclass
    - Changes to the class' annotations (as this is solved via Reflection)
    - Changes of EJB interface methods
    - Changes of Enum based constants
    - Addition or Removal of a finalize method
    - Only available in "Development Mode"
    - In general all Java Reflection based features are not supported by FastSwap (there is a commercial product available that does not have this limitation: Java Rebel 1.0 (might be aquired by Oracle soon ;-)

    Said in a nutshell how FastSwap works:
    If enabled via weblogic-application.xml (configure the item true), there is a agent running in the JVM for each deployed web app which scans the following directories for new classfiles (based on the timestamps):


  • Additional to the EJB3 annotations, the following are supported when Kodo is used as Persistence Provider:

Flag that specifies an instance can be removed during a transaction.
Flag that specifies the parameters are passed by reference.
Flag that specifies all warning messages are disabled.
Number of times you want the EJB container to automatically retry a container-managed transaction method that has rolled back.
Client ID for the MDB when it connects to a JMS destination. Required for durable subscriptions to JMS topics.
JNDI name of an actual EJB, resource, or reference available in WebLogic Server.
JNDI name of the JMS Connection Factory that a message-driven EJB looks up to create its queues and topics.
Method-level transaction isolation settings for an EJB.
Timeout for transactions in seconds.

Application Development
  • Spring Security:
    The Spring security (acegi) provides security to a Spring application while providing a rich set of security providers.
    In order to combine JAAS based security providers with your Spring Security features, you can use any authentication provider for performing authentication.
    After successful authentication, WLS principals are converted to Spring GrantedAuthority through a mapper class. After than, Spring Security is performing the authorization phase.

  • Comet, Bayeux Protocol, HTTP Publish Subscribe Server:


    Since 10.3, developers of Web 2.0 applications can take advantage of this new feature:
    The HTTP Publish-Subscribe Server allows clients to subscribe to a channel (similar to a topic in JMS) and receive messages as they become available. Behind the scenes, the Bayeux Protocol is used which defines a contract between the client and the server for communicating with asynchronous messages over HTTP. The server-side push technology is called Comet.

    How to use
    Each web application has its own instance of a pub-sub-server so the configuration is on web app level: the web app's weblogic.xml descriptor references the shared Java EE Library of the pub-sub-server and enables it that way. Once enabled, the configuration is done in the weblogic-pubsub.xml.

    Web application developers can optionally use server-side pub-sub APIs in their servlets or Java classes to get the pub-sub server context, manage channels, and manage the incoming and outgoing messages to and from the clients.
    If Ajax clients need to interact with the WebLogic based web application via the pub-sub-server, WLS 10.3 provides a Dojo based java script library that support two out of four transport types: long-polling and callback-polling.

    Horizontal scalability is solved by clustering. Pub-Sub-Servers are per default using in-memory persistence, are kind of clusterable but isolated. This means that each runs in its own context and is not aware of others (e.g. a chat application does not broadcast the message to all members in the cluster).
    But WLS 10.3 allows you to configure JMS to be the persistence message provider for the pub-sub-server. Configuration details and limitations are documented in the official documentation.

Supported Frameworks
  • Spring 2.0.2
Supported Databases
  • MySQL 5.x
  • Oracle 9,10,11 and Oracle RAC 10g and 11g
  • Pointbase 5.6
  • Sybase 12.5.03 and 15
  • Microsoft SQL Server 2005

Java Standard
Java EE
1.6 and 1.5 (1.6 is 15% faster)
Java EE Enterprise Web Services
1.2, 1.1
Web Services Metadata for the Java Platform
2.0, 1.1
Java API for XML-Based Web Services (JAX-WS)
2.1, 2.0
3.0, 2.1, 2.0, and 1.1
1.1, 1.0.2b
Java EE JDBC (with third-party drivers)
4.0, 3.0
MS SQL jDriver
Oracle OCI jDriver
1.0 and some 2.0 features (batching)
1.2 and 1.1
Java EE Servlet
2.5, 2.4, 2.3, and 2.2
Java EE Application Deployment
Java Authorization Contract for Containers (JACC)
2.1, 2.0, 1.2, and 1.1
1.2, 1.0
1.0 Full
Java EE CA
1.5, 1.0
1.2, 1.1
1.2, 1.1
Java RMI
2.1, 2.0
1.2, 1.1
1.1, 1.0
SOAP Attachments for Java (SAAJ)
1.3, 1.2
Streaming API for XML (StAX)
JSR 77: Java EE Management
JSR 233: Java EE Management
JSR 223: Scripting in the Web Container: PHP, Ruby

Web Service Standard
Java EE Web Services
1.2, 1.1
Web Services Metadata for the Java Platform (JWS)
2.0, 1.0
Java API for XML-Based Web Services (JAX-WS)
1.1, 1.2
SOAP Attachments for Java (SAAJ)
1.3, 1.2
1.1, 1.0
1.2, 1.5
1.0, 2004/08 member submission
1.1, 1.0
2.1, 2.0
SAML Token Profile

Other Standard
xTensible Access Control Markup Language (XACML)
Partial implementation of Core and Hierarchical Role Based Access Control (RBAC) Profile of XACML
1.1, 2.0
Data Direct database drivers

02 July 2008

Summary of Oracle Fusion Middleware Strategy Webcast of July 1st 2008

While I read through several infos about yesterday's webcast, I took some notes and want to share the summary here. Give me feedback should there be missing infos or even wrong infos.

  • Oracle President Charles Phillips says that the acquisition of BEA is not "yet another one". Reason: BEA was leader in middleware and well positioned in China market. On top of that, BEA's product are very much complementary to Oracle's.
  • And, among the three product pillars "database", "middleware" and "applications", middleware is the fastest growing at the moment, and probably in the next few years.
  • All BEA products will continue to be supported under the same time lines previously published by BEA prior to its acquisition.
  • Products are divided into three categories from a strategic product point of view: "Strategic Product", "Continue & Converge" and "Maintenance"
  • "Strategic" means: immediate integration into Oracle's Fusion Middleware Stack offering. If a BEA product has been selected as "strategic", it means that the BEA product is taken as such. The corresponding Oracle product (if there is any) is integrated into the BEA product (Integration Path: Oracle -> BEA).
  • "Continue & Converge" means: BEA products in this category need some redesign with gradual integration into the Fusion MW Stack (so there the integration path is BEA -> Oracle); products are supported for at least 9 years
  • "Maintenance" means: patches only, product phases out, support for at least 4 or 5 years
  • WLS has become the strategic JEE container, but OC4J development is kept ongoing (reason unknown). Primary focus for next WLS version is OSGi integration.
  • JRockit (BEA / Intel JVM) is strategic.
  • SOA: BEA's ALSB and Oracle's ESB are converged into a new product called Oracle Service Bus (OSB), also strategic.
  • SOA Governance: AL Enterprise Repository (ALER) is rebranded into Oracle SOA Governance Repository. The existing Oracle Service Registry is kept as the UDDI product.
  • BPM: ALPM and Oracle BPEL Process Manager are merged into a new product called "Oracle BPM", also strategic.
  • Portals: Oracle's existing products "WebCenter Framework" and "WebCenter Suite" are continuing to be the strategic products in the portal space.
  • AL-Pathways and AL-Ensemble as such are categorized as "Maintenance", but the RESTful APIs of those are converged into WebCenter Suite.
  • Monitoring: BEA Guardian is integrated into Oracle Enterprise Manager
  • Product Downloads: Technical Previews of BEA products are no longer public. This means that for instance WLS 10.3 TP2 must be requested through partner sites (I will check what that really means).
  • BEA Communities such as Dev2Dev and Arch2Arch are migrated to OTN: http://otn.oracle.com/
  • IDEs: Oracle's JDeveloper is going to be the primary IDE. Besides that, Oracle will publish an "Oracle Eclipse Plugin Pack", kind of continuing the BEA Workshop roadmap.
  • Conferences: Oracle Open World 2008 Sep 21-25 in San Francisco (BEA World is now integrated into this), Oracle Develop Program (dev2dev conference is now integrated into this)

04 March 2008

Quick Summary of WebLogic Workshop 10.2

Here is a summary of the "What's new" page when you launch Workshop 10.2 (which is now called Workspace Studio 1.1):

  • Eclipse Bundling: Workshop 10.2 is Eclipse 3.2.2 with WTP 1.5.4 including Spring IDE 1.3.6
  • Performance Release: 10.2 fixes many performance issues! We'll see! ....
  • Tuxedo Control: There is a new control to interact with Tuxedo Services
  • Adobe Flex Builder 2 and Flex Charting

    and since Workshop 10.1:

  • All functionalities of Workshop Studio have merged into Workshop:
    Struts, Beehive, JSF 1.1 Support
    Strong support for Web Service Creation
    DbXplorer (simple db client)
    DbXaminer (given a connection, it renders DB data model)
    ORM mapping support for Kodo and Hibernate
    Automatic generation of Spring configuration files and DAO classes
    Improved PageFlow support (WYSIWYG JSP editing and more netui support)
    Support for Maven based builds

As I will work with Workshop 10.2 from now on, I'll post my learning soon here.


WebLogic Portal WLP 10.2 out now!

Today I was able to download the new portal release.
First impressions will follow soon.


20 February 2008

BEA WLP 10.2 - A quick overview on Flatirons

BEA officially announced to release WLP 10.2, codename Flatirons, by end of February 2008.
Josh Lannin (Lead Product Manager WebLogic Portal) has just posted a new video (9 min) about the features.

Have a look at it or read my super quick summary:

  • WSRP via REST (not only WS) for Portlet Instances, not only Portlet Definitions
  • Web Clipping Portlet (high quality screen scraping)
  • Portlet Publishing URL: any portlet can be consumed by any other presentation platform (static website, other web app, other portal).
    Question on my side to be clarified: What about security?
  • Content Management: Bulk Actions for content editors (process multiple items)
  • Content Presenter Portlet: Easily display list of items of specific content types
  • RSS Feeds for content items in VCR out of the box
  • Sharepoint 2007 Integration via SPI VCR (still not JSR-170 !)
  • DVT (Dynamic Visitor Tools): Most of user customizations are "in-page" by drag'n'drop actions. DVT is based on the newly introduced DISC technology (see below)
  • DVT also features browsing the portlet catalog including preview.
  • DVT also allows users to reset the default configuration of the customized portlets.
  • DISC (Dynamic Interface Scripting):
    Provides public java script based API for interaction with WLP rendering framework.
    Technology behind it is BEA's Ajax Framework Bundle called "Adrenaline" which itself is based on the Dojo Toolkit and JSON.
  • Developers have a very convenient way of
  • WebLogic Workshop 10.2: Workshop Studio has gone! All tools are now for free!
  • REST on top of API: BEA started by exposing some portal framework APIs as REST services. As far as I know, the full APIs of PageView, BookView and DesktopView is available via REST out of the box!
  • Google Gadgets can directly be consumed via PAT (Portal Admin Tool)
Supported Standards:
  • JSF 1.1 and 1.2
  • Struts 1.1 and 1.2
  • Beehive 1.0.1
  • JSR-170 Level 1 and 2 excluding optional features
  • JSP 2.0
  • JSTL 1.1 and 1.2

An outlook on the non-confirmed features of the next portal release (codename Sunshine):
  • Portal CMS API exposed as REST services (content, search)
  • More Sharepoint Integration Features
  • WSRP 2.0 Runtime Functions
  • JSR 286 Support (Portlet 2.0): Inter Portlet Communication (IPC)
  • Java SE 6 Support

17 January 2008

BEA becomes Oracle

I'm not to repeat what you can read on the net since yesterday 3pm CET.
The best post I've read so far is by Rod Johnson.

My only hope is that Oracle picks the right products from BEA and that Oracle does not stop the innovation that BEA has shown in the last years.

Happy New Year!

30 November 2007

Product Axis for WebLogic

The following list shows the different WebLogic Versions and the products that are released with it.

Workshop Studio 3.3 (needs extra license)

  • WebLogic Server 8.1
  • WebLogic Server 9.x

WebLogic Platform 9.2

  • WebLogic Server 9.2
  • WebLogic Portal 9.2 (Codename Adrenaline)
  • WebLogic Integration 9.2
  • Workshop for WebLogic 9.2

WebLogic Portal 10.0

  • Workshop for WebLogic 10.0
  • WebLogic Server 10.0

Workshop for WebLogic 10.1

  • WebLogic Server 9.2 (supports it but not bundled)
  • WebLogic Server 10.0
  • This Workshop release has included the features of Workshop Studio for free!

WebLogic Platform 10.2 (Feb 29th 2008)

  • Workshop for WebLogic 10.2
  • WebLogic Integration 10.2
  • WebLogic Portal 10.2 (Codename Flatirons, next portal's codename will be Sunshine)
  • WebLogic Server 10 MP1

WebLogic Server 10.3

  • WebLogic Server 10.3 (Codename Essex)
  • Workshop for WebLogic 10.3

14 November 2007

Best Practices: WLP10.0: Read Portlet Preferences

The Background

This post addresses the following portal setup:

  • WebLogic Portal 10.0
  • Portal is used in streaming mode (virtual portals, desktops, book/page/portlet instances
The requirements I had to fulfill were the following:
  • From anywhere in the whole portal, the business logic had to be able to read portlet preferences from any portlet instance (even from desktops different than the current desktop)

The Problem
I thought the implementation would be easy by using the PresentationContext API:
PortletPresentationContext px = PortletPresentationContext.getPortletPresentationContext(request);

this worked fine as long as the portlet I was reading the preferences from belongs to the desktop the current request belongs to.
In case the portlet instances was belonging to another desktop, that did not work.

The Workarounds
There are no workaronds...

The Solution
... but a solution! The following code shows
  • How you can get all the preferences of any portlet (getPortletPreferences())
  • How you should retrieve an EJB Home interface

* @return null if portlet has no preferences or if portlet can not be retrieved. otherwise each key represents a preference, the value is Preference through which you retrieve the name, value or anything else from the preference.
public static final Map getPortletPreferences(HttpServletRequest request, PortletView portletView) {
request = getRealRequest(request);
Map map = null;
try {
// init
CustomizationContext customizationContext = new CustomizationContext(Locale.ENGLISH);

// read preferences
PortletInstance preferencesPortletInstance = portletView.getPortletInstance();
PortletPreferencesId portletPreferencesId = new PortletPreferencesId(preferencesPortletInstance.getPortletInstanceId().getId());
map = preferencePersistenceManager.getPreferences(customizationContext, portletPreferencesId);

if (map != null && map.isEmpty()) {
map = null;
} catch (Exception e) {
return map;

private static PortalCustomizationManager getPortalCustomizationManager() {
if (portalCustomizationManager == null) {
try {
PortalCustomizationManagerHome portalCustomizationManagerHome =
(PortalCustomizationManagerHome)getHome(new InitialContext(),PortalCustomizationManagerHome.LOOKUP_NAME);
portalCustomizationManager = portalCustomizationManagerHome.create();
} catch (Exception e) {
return portalCustomizationManager;

private static PreferencePersistenceManager getPreferencePersistenceManager() {
if (preferencePersistenceManager == null) {
try {
PreferencePersistenceManagerHome preferencePersistenceManagerHome =
(PreferencePersistenceManagerHome)getHome(new InitialContext(),PreferencePersistenceManagerHome.LOOKUP_NAME);
preferencePersistenceManager = preferencePersistenceManagerHome.create();
} catch (Exception e) {
return preferencePersistenceManager;

private static Object getHome(InitialContext context, String jndiName) throws NamingException
String fullJndiName = ApplicationHelper.getNonVersionedAppName()+ "." + jndiName;
Object obj = context.lookup(fullJndiName);
return obj;

* @param request
* @return returns the original Request Object, not the wrapped pageflow request object.
public static HttpServletRequest getRealRequest(HttpServletRequest request) {
if (request instanceof ScopedRequest) {
request = ((ScopedRequest)request).getOuterRequest();
return request;

Your Feedback
I also posted this in the official portal forum, so feedback is welcome at both places! Thanks.

13 September 2007

BEA WebLogic Portal 10 : Hands-On Experience

dear readers,
in my current portal 10 project I collected lots of infos regarding the new features, some challenges with Workshop10 as well as the cluster setup of a portal 10 domain.

as the whole project makes me fully busy, I will write a post-project smackdown of what I have learnt, and I can promise that the summary is going to be interesting as there is no info on the web at this moment on these topics ;-)

so stay tuned.


05 April 2007


Current version of ALSB is 2.6.
BEA's next release of ALSB with codename PUMA is following the general direction of AquaLogic products:

  • Make integration of BEA products easier
If have no idea how far BEA is regarding their microServiceArchitecture vision, but this is certainly an important step in parallel:
  • Puma will make use of the just announced Custom Transport SDK provided by the ALSB team. This is an implementation of a custom transport layer allowing ALBPM to talk directly with ALSB. One of the main reasons to bring this up was the demand on further improving performance.
Below is a pre-release screen shot of the ALBPM custom transport already working, deployed, inside ALSB:


PUMA will bring additional cool features to improve the ALBPM-ALSB integration. Features such as: automatic publication and subscription of services, better authentication support via WS-Security, etc.

WebLogic Server 10 Summary

  • JavaEE5 certified
  • Operations News:
    weblogic.jar split up:
    • Include not only weblogic.jar but also WL_HOME/modules/weblogic.server.modules_10.0.0.0.jar directly in the classpath
    • The java weblogic.version command has a new -verbose optional argument that returns version information about numerous WebLogic Server components.
    • As a consequence of the weblogic.jarreorganization, your existing J2SE security policies may need to be modified to control access to the new separate modules. The default J2SE security policy in WebLogic Server has been modified to grant access to the new modules.
  • EAR libs:
    • APP-INF/lib and/or
    • library-directory defined in deployment descriptor of EAR file
    • library-directory has priority over others
  • MySQL 5.0 Support
  • WebLogic Diagnostic Framework
  • EJB3 + EJB2.1 support
  • JAX-WS 2.0: Java API for XML-Based Web Services
  • JAXB 2.0: Java Architecture for XML Binding
  • Web Services for Java EE 1.2
  • SAAJ 1.3: SOAP With Attachments API For Java
  • WS-SecureConversations 1.3
  • WS-Security 1.1
  • WS-SecurityPolicy 1.2
  • WS-Trust 1.3
  • new set of security policy files that comply with WS-SecurityPolicy 1.2
  • JAX-RPC: support MTOM (Message Transmission Optimization Mechanism) and XOP (XML-binary Optimized Packaging)
  • Filtering Classloader: specify packages to be loaded from the application specific lib folder (WEB-INF/lib) rather than system classpath.
  • Servlet 2.5
  • JSF 1.2
  • JSTL 1.2
  • JSP 2.1
  • Cross-Domain Security
  • Windows NT Authorization Provider Deprecated
  • Admin Console: record actions and store them as WLST scripts
  • Admin Console extensions must be packaged as a WAR file
  • JMX implementation supports the jmx.remote.x.request.waiting.timeout environment parameter (optional in JMX Remote API 1.0)

Full List of standards supported

Java Standards Support

Standard Version
Java EE 5.0
JDKs 5.0 (aka 1.5), 1.4 (clients only)
Java EE Enterprise Web Services 1.2, 1.1
Web Services Metadata for the Java Platform 2.0, 1.1
Java API for XML-Based Web Services (JAX-WS) 2.0
Java EE EJB 3.0, 2.1, 2.0, and 1.1
Java EE JMS 1.1, 1.0.2b
Java EE JDBC (with third-party drivers) 2.0
MS SQL jDriver 1.0
Oracle OCI jDriver 1.0 and some 2.0 features (batching)
Java EE JNDI 1.2
OTS/JTA 1.2 and 1.1
Java EE Servlet 2.5, 2.4, 2.3, and 2.2
Java EE Application Deployment 1.2
Java Authorization Contract for Containers (JACC) 1.1
Java EE JSP 2.1, 2.0, 1.2, and 1.1
JMX 1.2, 1.0
JavaMail 1.2
JAAS 1.0 Full
Java EE CA 1.5, 1.0
JCE 1.4
Java RMI 1.0
JAX-B 2.0
JAX-P 1.2, 1.1
JAX-RPC 1.1, 1.0
JAX-R 1.0
SOAP Attachments for Java (SAAJ) 1.3, 1.2
Streaming API for XML (StAX) 1.0

Web Services Standards Support

Standard Version
Java EE Enterprise Web Services 1.2, 1.1
Web Services Metadata for the Java Platform (JWS) 2.0, 1.0
Java API for XML-Based Web Services (JAX-WS) 2.0
SOAP 1.1, 1.2
WSDL 1.1
SOAP Attachments for Java (SAAJ) 1.3, 1.2
WS-Security 1.1, 1.0
WS-Policy 1.0
WS-SecurityPolicy 1.2, 1.1
WS-PolicyAttachment 1.0
WS-Addressing 1.0
WS-ReliableMessaging 1.0
WS-Trust 1.0
WS-SecureConversation 1.3, 1.0
UDDI 2.0
JAX-R 1.0
JAX-B 2.0

Other Standards

Standard Version
SSL v3
X.509 v3
Security Assertion Markup Language (SAML) 1.0, 1.1
TLS v1
HTTP 1.1
xTensible Access Control Markup Language (XACML) 2.0
Partial implementation of Core and Hierarchical Role Based Access Control (RBAC) Profile of XACML 2.0