Archive for September, 2015

Replace Collab’s horribly broken file uploader

Sunday, September 27th, 2015

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
(more…)

Fix WebCenter Studio Server for IE11

Thursday, September 24th, 2015

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

Monday, September 21st, 2015

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

(more…)