Welcome to the Integryst WebCenter Interaction Blog!  Here you'll find the latest in WCI (or, if you prefer, Plumtree Portal, AquaLogic User Interaction, ALUI, or WCI) news, tips, and tricks.

Replace Collab’s horribly broken file uploader
September 27th, 2015 by Matt Chiste

While the entire WebCenter Interaction stack is now dead, there are still some of you out there using the legacy code because it “just works”.

As technology evolves, though, more and more pieces of the stack have started to crumble – including Collaboration Server’s multi-file upload. We’ve talked about issues with it in the past and hacked it more than once, but it pretty much just worked in IE7-9, and wasn’t even available in other browsers like Chrome.

So, enough was enough: in search of a better solution, I came across the awesome FineUploader product, which does an incredible job of allowing multiple uploads with virtually any browser (degrading properly based on available features of each browser), and doesn’t rely on any crap technology like Flash or Java.

Rather than completely re-inventing the wheel, I just cracked open the collab.war file and replaced the old crap code with new code leveraging fineuploader.com; uploads themselves are still processed the exact same way that the old java app used to use, so nothing is compromised in terms of features or security. It was really only a few files that needed to be changed, which alters the upload form that used to look like this:
collab-file-upload-java
… to now look like this:
fine-uploader-collab-upload
Read the rest of this entry »

Fix WebCenter Studio Server for IE11
September 24th, 2015 by Matt Chiste

IE11 has caused all sorts of problems in the WebCenter Interaction stack thanks to its new new User-Agent header that these legacy products can’t parse.

Today’s issue is how to fix Studio Server. If you’re seeing this exception in your logs, it’s because Studio can’t parse the user-agent string:

StandardWrapperValve[gatewayservlet]: Servlet.service()
for servlet gatewayservlet threw exception
java.lang.StringIndexOutOfBoundsException:
String index out of range: -1
at java.lang.String.substring(Unknown Source)
at com.plumtree.studio.util.BrowserInfo.parse(BrowserInfo.java:334)
at com.plumtree.studio.util.BrowserInfo.(BrowserInfo.java:137)

You could just use Compatibility View, but that’s not always an option when you have a ton of end-users. Instead, I opened up the studio.war file and recompiled in a fix that wraps a try-catch block around this bad code, and simply says “if I can’t figure out what browser is being used, assume it’s legacy IE.”. The class file is at com.plumtree.studio.util.BrowserInfo:

try {
  .... regular legacy browser parsing ...
}
catch (Exception e) {
   browserName = "MSIE";
   browserVersion = 6F;
   browserPlatform = "Windows";
   jsControlsOK = true;
}

Drop me a line if you’d like the replacement class file to use in your version of studio.war.

Simplify WCI 10gR4 installs in IIS7 by dodging this bug
September 21st, 2015 by Matt Chiste

Years ago I wrote about manually deploying WCI to IIS7 because the installer simply fails to do it, without reporting any error. In doing a recent 10gR4 upgrade, I came across this issue again and found that it’s actually a documented bug (login required):

When installing WebCenter Interaction 10.3.3 on IIS7 on Windows 2008 Server, the installer fails to configure the IIS application pool, web site, and virtual directory. The installer returns no error and there are none in the Windows event logs.

Turns out that the workaround is simple enough to get the installer to automatically deploy the portal to IIS7 – just enable the “IIS 6 Management Compatibility” service:
iis7-role-service-wci

Read the rest of this entry »

Using WebCenter Publisher with Internet Explorer 11
May 26th, 2015 by Matt Chiste

The release of Internet Explorer 11 has caused a unique set of issues for WebCenter Interaction. We’ve covered some WCI portal hacks and Collaboration server hacks to work around some of these challenges; today’s post is about Publisher.

First off, you’ve probably noticed that Publisher doesn’t work with IE11:
publisher-ie-5.5
The solution to this problem is simple: Go to Tools: Compatibility View Settings, and add your portal site to the list:
compatibility_list_ie11

This will enable “Compatibility Mode” for IE, which means that (among other things) the user agent string will contain “MSIE”, which lets Publisher use its antiquated user agent sniffing to enable Publisher Explorer:
publisher-explorer
The next one after the break isn’t quite so simple. Read the rest of this entry »

Installing (unsupported) Publisher 6.5 in WCI 10gR4 environment
April 15th, 2015 by Matt Chiste

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:

BUILD FAILED
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
April 7th, 2015 by Matt Chiste

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:
squished-navigation-webcenter-interaction

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

ie11-iis-wci

Using Collaboration Server with Internet Explorer 11
April 3rd, 2015 by Matt Chiste

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:
collab-ie-11

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 com.plumtree.util.http.BrowserUtil.java. 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";
			else
	            return "NS";
		}
    }

Read the rest of this entry »

The Dreaded Collaboration Search Index Rebuild
March 18th, 2015 by Matt Chiste

Does the following screen shot fill you with dread?
collab-search-rebuild

If so, you’ve likely one of us who have had the dubious displeasure of having to work with the terribly bad “Collab Reindexing” functionality, where you ask Collab to rebuild the contents of the search index – usually after a migration or upgrade. The problem is that Collab can store hundreds of thousands of documents, and this process tends to fail, fill up disk space, or do various other terrible things like kidnapping your hamster and holding it for ransom. When any of those things happens, you have to just start over from scratch and pray harder next time.

I recently did a WebCenter 10gR4 migration/upgrade because Windows Server 2003 is approaching end of life in July, and we wanted to upgrade to Windows Server 2008 without jumping through any crazy hoops that Oracle wouldn’t support in 10gR3. The 10gR4 support matrix indicates Windows 2008 (x86 and x64) support for WCI 10.3.3, Collab 10.3.3, and Analytics 10.3.0.2 (don’t ask why the versions aren’t the same, or why Publisher is now technically unsupported for those upgrading to 10gR4). I won’t even rant here about how terrible the installation process was, resolving error after error and manually installing services and deploying web apps, but the Collab Search rebuild deserves a special place in hell.

First, let’s get the “good news” out of the way since there isn’t much of it: in Collaboration Server 10gR4, there’s now an option to re-index only the documents that haven’t been submitted to search yet because the process just exploded. Which is super. While I’d prefer the process not “explode” all the time, I’ll take what I can get: restarting the process at document 110,000 out of 230,000 is much better than restarting at document 1.

The bad news is that the process still fails all the time, despite claims of fixes and notes of “re-breakings” (Oracle bug – login required). The logging is terrible (hint: you can tweak some log settings by cracking open the Collab .war file and changing log parameters there, and you can turn on the following in PTSpy – in addition to “Collab” and “SearchService” – to get a more accurate picture of this bizarrely convoluted process: ALUIRemoting, Remoting, dummy, Configuration. When the search rebuild process fails, you can no longer access Collab Administration (because it seems the first thing it tries to do is connect to the Search Service, and that’s dead now). And the errors that show up aren’t even consistent over time. You’re likely to see a ton of different errors after a period of time, usually with the remoting process:
jms-connection-failed
This error seems to be quite common though:

javax.jms.JMSException: Exceeded max capacity of 50

What can you do about this? I changed the transport protocol for the Collab Search Service from TCP to HTTP and it cleared up the problem, although for the life of me I can’t tell you why. Read on for details of how to do this yourself… Read the rest of this entry »

Fix WCI Publisher Search with a simple tweak
October 11th, 2014 by Matt Chiste

Ever seen this error in WebCenter Publisher when using Friendly URLs?

INFO | ERROR java.lang.StringIndexOutOfBoundsException: String index out of range: -1
INFO | ERROR at java.lang.String.substring(String.java:1768)
INFO | ERROR at org.apache.jsp.published_005ftools.search_jsp._jspService(search_jsp.java:101)
INFO | ERROR at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
INFO | ERROR at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
INFO | ERROR at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)

Yeah, it’s not the first time that Friendly URLs breaks existing functionality, and like that Excel issue, fortunately the fix is pretty easy. Basically, you’ll need to open up the ptcs.war file and edit the /published_tools/search.jsp file in there. Specifically, there’s a section that looks like this:

       String baseURL = (cspRequest.getReturnURI().toString());

       //SE-VV: 57027 - With the recent portal code changes in Merced, the string "gateway"
       //is not present in the baseURL anymore. As a workaround, we instead look for "?" so that index is a 
       //non-negative integer. Now, when we search for a CI from within a news portlet, it'll take us to
       //the correct search results page instead of throwing an error.
       int index = baseURL.indexOf("gateway");
       if(index < 0){
              index = baseURL.indexOf("?") + 1;
       }
              baseURL = baseURL.substring(0, index - 1);

Read the rest of this entry »

WCI 10gR4 (10.3.3) won’t work without a hotfix
October 7th, 2014 by Matt Chiste

I was recently helping a client upgrade from Plumtree 5.0.4 (!) to WebCenter Interaction 10gR4 (aka 10.3.3), and after running through all the DB upgrade scripts, the classic navigation was still showing this error:

Error displaying the Category tabs: -2147205114 – Invalid community id provided: 123 . The community does not exist or the user does not have access to it.

The strange thing about the error was that the “Community ID” shown in the error message is actually the ObjectID of the first PAGE in the community, not the community itself.

wci-10gR4-hotfix

After doing all the standard debugging and ruling out the DB upgrade scripts, it turns out that this is a known issue (KB article 1422352.1, Bug 13775312 – login required). It is resolved with Hotfix 14745949 (login required), which addresses other issues such as:

  1. UNINSTALLING ONLY AUTOMATION SERVICE CAUSES THE PTPORTAL DIRECTORY TO BE REMOVED (Issue 14745949)
  2. FIX FOR BUG 9691984 CAUSES PERFORMANCE DEGRADATION IN AUTH SYNC (Issue 14565631)
  3. COMMUNITIES WITH MORE THAN ONE PAGE WILL ERROR IN CLASSIC UI (Issue 13775312)
  4. ORACLE WCI PORTAL CANNOT COMMUNICATE WITH PORTLET REMOTE SERVER VIA SSL (Issue 13332531)
  5. PORTAL MEMORY LEAK IN SEARCH CLIENT – BASIC/ADV SEARCH, SNAPSHOT QUERIES (Issue 12988569)
  6. HTTPSTREAMPARSER CANT FIND END OF RESPONSE HEADERS CAUSING NETWORK FAILURES (Issue 12677959)
  7. HIGH CPU USAGE FROM QUERYD WHEN ONE OF THE NODES IS RESTARTED (Issue 12578166)
  8. ENABLE FUNCTION TRACING AND CLEAN UP LOGGING FOR FUTURE EASIER DEBUGGING (Issue 12382745)
  9. ADVANCED LAYOUT EDITOR: WIDE PORTLETS ARE NOT ACKNOWLEDGED IN ONE-COLUMN LAYOUT (Issue 10199005)
  10. LDAP PWS SYNC JOB PERFORMANCE AND STABILITY IMPROVEMENTS (Issue 7822564)