Archive for May, 2010

Typing PTSpy filters occasionally works

Monday, May 31st, 2010

As you likely know, PTSpy messages are UDP messages generated by all services in the WebCenter stack. PTSpy / WebCenter Logging Utility is just a receiver for these messages.  Things can go wrong some times, though: UDP is not a guaranteed message protocol, and log events may be lost.  But more importantly, occasionally these applications don’t report themselves properly, and as a consequence, PTSpy doesn’t display them in the filter list.

What I didn’t know until recently is that just because an application doesn’t show up in the message sender list doesn’t mean the application isn’t generating messages.  Typing the name of the sender into the text field sometimes works too.  Take this example; I was trying to diagnose a problem with the Portal Notification Service, but the CNS didn’t show up in the list of message senders:

In the CNS log, I found this line:

INFO   | jvm 1    | 2010/05/09 19:35:26 | Using OpenLog Application Name ‘cns.NRC372DR.plumtree’ for CNS SPY logging

So on a whim, I tried just typing that string into the “Message Sender” field.  That couldn’t possibly work, could it?  I mean, if PTSpy doesn’t detect the Sender, it won’t capture messages being generated by it, right?

Glad I was wrong on that one:

Bug Blog 5: Broken Filters in WebCenter Analytics 10.3.0

Thursday, May 27th, 2010

WebCenter Analytics 10.3.0 has a feature to “Select All/Top/Bottom Options” when you edit various roles.  In theory, this is a nice feature because it allows you to select, well, “all”, “top” or “bottom” of different kinds of lists.  In practice, it’s tragically broken, and you’ll have absolutely no idea why if you look at the logs without upping the logging threshold to debug.  In fact, even once you turn on debugging in the logs, you’re still not in much better shape.

The Symptom: Filters don’t work when the “Select All/Top/Bottom Options” option is turned on for a Role in Analytics Administration.

The Solution: Turn off the “Select All/Top/Bottom Options” for the various roles within Analytics (under “Select Utility: Analytics Administration”), and restart the Analytics UI service.

The Use Case:

I have “Select All/Top/Bottom Options” turned on.  My UI for the “Page Traffic Report Preferences” seems decent enough – I’ve got a drop-down showing different types of pages and an option to filter on certain communities.  Here I’ve picked all pages, and chosen only TWO communities from the list:

… but when I view the Page Traffic Report on my community, in the report I see every single page in the entire portal – no filter applied:

(more…)

Publisher JavaScript/JSpell Problems? Fix ’em here.

Sunday, May 23rd, 2010

Ah, Plumtree Publisher.  We had a good run; I’ve loved you, I’ve hated you.  I’ve even tried to throw you a bone by developing a better editor to replace your terrible WYSIWYG editor in AquaLogic Publisher 6.5, and a utility to replacing glaringly absent features. But I mean, c’mon, it’s like you don’t even try any more.

If you, dear reader, have written similar missives to the oft-maligned Publisher editor, this tip is for you.  Specifically, if you’re getting JavaScript errors in various Publisher administrative pages and it seems hopelessly broken, chances are the problems are with the new jSpell spellchecker (you’ll see file names like jspellSettings_UTF-8.js in the IE error window):

This problem typically occurs when you have multiple experience definitions and are accessing your WebCenter portal with different base URLs.  The reason is that Publisher creates absolute URLs to the spell checker JavaScript files, and the portal’s link transformation seems to be broken by creating the wrong base URLs for the gateway (more on this another time; I can only rant about one thing at a time…).  Consequently, Internet Explorer refuses to run the Javascript when it’s being executed from a different base URL.

(more…)

Logging in WebCenter Analytics with log4j.properties

Wednesday, May 19th, 2010

Stay tuned for a flurry of Analytics posts, boys and girls, because recently I had a really bad day fighting WCI Analytics after a 10gR3 upgrade.  Let’s kick this off with something simple: logging.  Well, you’d THINK logging would be simple, right?  You’d just go into PT_HOME\ptanalytics\10.3.0\settings\config\wrapper.conf, and change some of the settings under “# Wrapper Logging Properties”, and restart the service. 

No, friends, that would be too easy.  This setting only controls the WRAPPER log, which pretty much does nothing but write thousands of messages like this if you turn on DEBUG:

DEBUG  | wrapperp | 2010/04/14 01:12:33 | send a packet PING : ping
INFO   | jvm 1    | 2010/04/14 01:12:33 | Received a packet PING : ping
INFO   | jvm 1    | 2010/04/14 01:12:33 | Send a packet PING : ok
DEBUG  | wrapperp | 2010/04/14 01:12:33 | read a packet PING : ok
DEBUG  | wrapper  | 2010/04/14 01:12:33 | Got ping response from JVM

Instead you have to edit the log4j.properties file.  Another piece of cake, right?  There’s a log4j file in that config folder for hibernate, synch, analytics25Update, and analyticsLoadEvents, so it’s got to be somewhere in there.

No, friends, THAT would be too easy.  Instead, the log4j file you actually need to change to get usable debug messages in analyticsui.log is packaged inside the analytics.war file itself.  There are lot of ways to change and repackage the log4j.properties file into the .war while still preserving the WEB-INF/classes path, but here’s how I did it with my old friend, Beyond Compare.  Basically, I pull the log4j.properties out of the .war, edited it, and use Beyond Compare to jam it back in there:

Bonus tip – if you find Analytics is writing a ton of entries to the application event log, this one IS actually in the wrapper.conf file.  Just set the following to some high threshold like FATAL:

# Log Level for sys/event log output.  (See above for log levels)
wrapper.syslog.loglevel=FATAL

A Closer Look at WCI Directory Services

Saturday, May 15th, 2010

By now, you’re probably aware that WebCenter comes with an LDAP Directory Service, which has been shipping since ALUI 6.5 and poked around in with Softerra’s LDAP Browser.

I’ve been working on developing a PEI to allow users to log into any auth source without having to select one on the login form, and my dev environment didn’t have access to an LDAP or Active Directory server.  Then I realized that I did, in fact have one – it’s provided by the portal itself.

So, I used the LDAP Browser to log in with my admin credentials (user name for Administrator: cn=Administrator,dc=bea,dc=com):

… and poked around the directory to get the appropriate User and Group Query Base and Filter, plus some other attributes.  I then set up an LDAP auth source in my portal with the following settings:

… and viola! After synching the users (with some errors in the logs because you’re basically creating users with identical names as users that already exist in the portal), I was able to log in using a local portal account, but via the LDAP AWS auth source:

Practical? No.  Useful if you’re trying to create a test auth source and don’t have an LDAP or ActiveDirectory server lying around?  Yup.

Plumtree (aka ALUI, aka WCI), indeed, is not dead yet

Wednesday, May 12th, 2010

You’ve heard it here before, but yesterday, Brian Harrison, Oracle Product Manager extraordinaire, made it official: The My Oracle Support (MOS) community has been announced!

Any thoughts?  A great step by Oracle to showcase the virtues of WebCenter Interaction?  Too little too late?  I for one haven’t completely given up, and this community shows great promise – even if it’s not for the community itself (which has been around for a while), but a showcase of how the ALUI Collaboration UI doesn’t have to be so bad, and can truly integrate into a social community space.

Don’t count Plumtree out just yet; there are still a few more tricks up its sleeve…

Upgrading Analytics 2.5 to 10.3.0 – missing documentation

Tuesday, May 11th, 2010

If someone can find this in the documentation SOMEWHERE, let me know and I’ll update this post.  Until then, consider yourself one of the lucky few who are now aware of a missing step in the 2.5 and 10gR3 WebCenter Analytics Upgrade guides:

Aqualogic Analytics 2.5 QuickStart Guide

WebCenter Analytics 10gR3 Upgrade Guide

The step:  In addition to running the Analytics25Update.bat file with no parameters:

PT_HOME\ptanalytics\10.3.0.1\bin\Analytics25Update.bat

… you need to also run it with a “collab” parameter to properly partition the Collaboration tables:

PT_HOME\ptanalytics\10.3.0.1\bin\Analytics25Update.bat collab

There’s A WCI App For That 2: PublisherManager

Friday, May 7th, 2010

You’ve read about Integryst’s PublisherEditor.  You’ve seen the video and read the product page.  The product continues to evolve, and is still the best WYSIWYG editor for AquaLogic / WebCenter Publisher on the market.  This post, though, is about an additional utility that comes included with PublisherEditor, called PublisherManager.

Articles have been written about finding published content URLs and changing publishing targets, but to date there hasn’t been a safe way to do a global search and replace of text in Content Items and Presentation Templates, or generate a report on publishing targets.  PublisherManager fills that void with a clean UI and the ability to download a report as a CSV so you can identify :

PublisherManager and PublisherEditor work with WebCenter Interaction 6.0 – 10.3.0.1, and AquaLogic Publisher 6.1 – 6.5. 

Interested in a demo?  Drop me a line.

Bug Blog 4: Fix Broken File Downloads in 10gR3 (Part Deux)

Monday, May 3rd, 2010

Last week I provided portal filter code to fix some elements of opening documents in WebCenter Interaction’s Knowledge Directory (and Search and Snapshot Queries).  This week is another follow-up on that theme, and I’ll provide another piece of code to continue cleaning up the mess that is the Knowledge Directory Downloading Clusterf*ck (in IE at least).

Ever gotten this little present after doing an upgrade to 10gR3, when trying to open a document in the Knowledge Directory using IE7 or IE8?

 

Ah, the old “To help protect your security, Internet Explorer blocked this site from downloading files to your computer.”  What’s even more ridiculous, if you “accept” the download, it STILL doesn’t work because IE tries to reload the page, and WCI is very stupid about how it opens this popup window (see how that address bar shows “about:blank”?).  It seems this only happens in IE, and only if you have adaptive layouts disabled with “open documents in new window” enabled, so it doesn’t affect everyone.  But I die a little on the inside every time I see that stupid thing: yes, my friends, I am an empty, hollow shell of a consultant.

Fortunately, I decided to seek redemption for WCI and myself by proxy, and checked out the HTML source for a typical file open link.  It’s kinda hilarious:


<a href="#" onclick="var currentWin = PTCommonOpener.openInNewWindow('', 'Opener_18_1322446', 800, 600, true); currentWin.location= 'http://server/portal/server.pt/document/1322446/slide_1'; return false;">Doc Name</a>

Whhaaaaaaa…!?  Sure I know there are dozens of ways you can open a document in a popup window, and many have their advantages (for example, by using JavaScript you can control the size and layout of the window), but I’d be hard-pressed to come up with a worse way to open a document.  I’ve always hated the fact that you can’t just hover over the link to see the URL, and can’t right-click and copy the shortcut to mail to someone later. (Tip: use adaptive layouts and these problems go away!).  Or they could have at least just done a window.open method in that onclick event.  OK, so they wanted to use a wrapper method – that’s fine – but the PTCommonOpener.openInNewWindow actually takes a URL paramater, so they could have just passed the URL into that function, rather than creating a new, EMPTY document and then trying to use Javascript to load the document into that window.  At very least they could have put the document URL in the “href” parameter so it’d work without JavaScript (and be 508-compliant) and users could copy the links with a simple right-click.

OK enough rambling.  On to a solution: (more…)