How to read WebLogic 10.3 transaction logs (TLOG)

When analyzing distributed XA transaction problems it can prove useful to have a look at Oracle WebLogic’s internal transaction backup log file (TLOG). Since that file is all binary, it needs to be converted into a more human readable format first. In WebLogic 10.3, the TLOG file can be converted to text using this class:

weblogic.transaction.internal.StoreTransactionLoggerImpl

The class needs the transaction library from the modules directory and weblogic.jar in the classpath. Continue reading

SSO between BEA WebLogic Server and SAP Enterprise Portal (Web Dynpro) using Web services

You’re looking for a way to consume Web services in SAP NetWeaver 2004s (and SAP Composition Environment aka NetWeaver 7.1) from BEA WebLogic Server 8.1 (and newer versions) using Single Sign On (SSO)?

You may have figured out already that SAML is not an option here because the SAP side is just a SAML consumer and not a provider (as of today). The only way left is to use the proprietary SAP Logon Tickets. Proprietary authentication mechanisms always require some extra work. In this blog article I’ll fill you in on what you need to SSO-connect those two J2EE platforms. Continue reading

QName problem with BEA WebLogic Server (WLS) 8.1

One day I was looking for a fast and easy to use Java webservice implementation. I found XFire, the next gen java SOAP framework which is based on a low memory StAX model. There’s a FAQ on the XFire website about how to run XFire in a WebLogic environment. XFire requires a newer version of the javax.xml.namespace.QName than is included in weblogic.jar. Now, this cures the problem with the missing constructor. Depending on what exactly you do in your webservice other errors may occur. The most prominent exception being this one:

java.lang.LinkageError:
loader constraints violated when linking
javax/xml/namespace/QName

The problem occurs if there’s the combination of an older version of QName (being loaded from the application server at boot time) and a library which uses the 3-string constructor introduced in a later version of QName. This most likely is a class loading issue because the QName class in weblogic.jar is loaded earlier by the system classloader and can’t be “overridden” by the EAR/WAR classloader. But that’s just my best bet as I am not a classloader expert when it comes to WebLogic’s classloading mechanism.

This is neither an XFire-only problem nor is it a WebLogic-only problem! I read about XML libraries (eg. XMLBeans, Spring, Muse) having the same issues with QName if running in an application server environment (e.g. IBM Websphere). Continue reading