Archive for April, 2015

Installing (unsupported) Publisher 6.5 in WCI 10gR4 environment

Wednesday, April 15th, 2015

Installing WebCenter Interaction 10gR4 is no treat, especially given that supplemental products like Publisher or Studio are not supported in Windows Server 2008, and that’s likely the exact reason why you’re upgrading – to get to Windows Server 2008 (you’re not doing it for the “features”, are you?).

Many of the installers fail for crazy reasons, and I’ve found myself having to do quite a few hacks to get everything up and running. One error that’s a particular nuisance is that services often fail to install, throwing an error in the installation process like this:

D:\bea\alui\uninstall\ptcs\6.5\register\register.xml:574: The following error occurred while executing this line:
D:\bea\alui\uninstall\ptcs\6.5\register\macrodefs\wrapper.xml:92: D:\bea\alui\ptcs\6.5/bin/service.bat is not a valid file. This parameter must point to the batch or shell script that launches the wrapper service.

The good news is that usually these installation errors happen after all files have been copied, and there’s often a batch file in the \bin folder for your particular application to handle service creationg. So, for the above example where the Publisher installer has failed, the steps to complete the installation are simple:

  1. Open a command prompt as administrator (click start, type cmd, right-click command prompt and pick “Run as Administrator”)
  2. Cd to d:\bea\alui\ptcs\6.5\bin\
  3. Type “service install”

WebCenter Interaction and Internet Explorer 11

Tuesday, April 7th, 2015

In our last post, we hacked support for IE11 into Collaboration Server. Today, we’ll look at a small tweak to fix some UI issues with Internet Explorer 11, because, you know, technically Oracle WebCenter Interaction only supports up to IE9 (forget about Chrome!):

Microsoft Internet Explorer 6.0, 6.0 SP1, 6.0 SP2 (on XP), 7.0 (on Vista), 7.0 SP2 (on XP SP2), or 8.0

Internet Explorer has followed a long tradition of screwing up web sites by changing the way it renders pages, and IE11 is no exception. For example, one of the sites I manage started rendering a squished navigation bar in IE11:

Rather than trying to hack code or anything, we’re left with a pretty good solution: force IE to use its old IE9 rendering engine. You do this by adding an HTTP response header to your portal pages:

X-UA-Compatible: IE=EmulateIE9


Using Collaboration Server with Internet Explorer 11

Friday, April 3rd, 2015

Webcenter Collaboration 10gR4 was released in May 2013. Internet Explorer 11 was officially released in October/November of that year. Why is this a problem? Because, since Oracle has killed the entire product line, users are left high and dry with compatibility issues, getting a degraded version of Collab Explorer that’s missing key features like Bulk Upload:

Why is this? Because the abomination known as Internet Explorer threw developers yet another curveball in IE11: they changed the user agent string to one that doesn’t contain the characters “MSIE”. Sure, Oracle can be faulted for not following best practices on browser detection, but we’ve thrown enough angst Oracle’s way in this blog; it’s Microsoft’s turn today. I mean, they’ve used MSIE in their user agent strings for literally TWENTY YEARS; of course they should change it now to:

Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko

The solution is yet another Collab Hack requiring you to decompile code. Specifically, in collab-core.jar, we need to update There are two places in the code that need to be updated; you’ll note I didn’t even attempt to implement a generic solution, but am specifically looking for this IE11 user agent string. That, of course, is not completely future-proofed, but since WCI is basically dead, and IE is getting killed off, I’m not too worried. The updated code will look something like this:

    private static float parseVersion(HttpServletRequest request, String searchPattern)
        String userAgent;
        userAgent = request.getHeader("User-Agent");

	if(InStr(request.getHeader("User-Agent"), "rv:11.0"))
		return 11.0F;

… and:

    public static String GetBrowser(HttpServletRequest request)
        if(InStr(request.getHeader("User-Agent"), "MSIE"))
            return "IE";
        else {
	        if(InStr(request.getHeader("User-Agent"), "rv:11.0"))
				return "IE";
	            return "NS";