Monday, January 5, 2015

External monitor not detected by Mac running Yosemite - a solution

A funny thing happened while researching this issue, as it seems that many Mac users that have upgraded to Yosemite have experienced this problem with no resolution.  I found posts on the Apple support site suggesting ridiculous things like getting a new video cable or unplugging the cable from the monitor (but not your Mac) or uninstalling DropBox, when everything worked fine before upgrading to 10.10.  That's like telling someone to stand on one foot, rub your tummy with one hand and the top of your head with the other, but only on a leap year Feb 29th at Noon, and then magically, your external displays will once again work with your Mac.  My external monitor worked like a dream with my old MBP, and it worked with my new one out of the box loaded with Mavericks, but as soon as I upgraded to Yosemite and imported files/profile/settings from my dead MBP's hard drive, POOF!  External monitor no longer is recognized.  If I boot into Mavericks, external monitor works - so I know it's not the monitor or the cable, it's Yosemite that's the problem.  And I had to teach a class to customers just before Christmas and I could not use the projection screen to display my slides, so I had to (GASP!!) use a Windows laptop.  Now how stupid is that, Apple?

I was also looking into getting a 1 TB SSD for my 2014 Mac (my 2011 MBP suffered a fried logic board and had a 1TB SSD in it) and finding that you can't get an after-market SSD to fit inside the Retina MBP's because of the way Apple has designed the hardware interface.  And to top it all off, you can't even get 3rd party external SSD's to boot Yosemite, unless you are fortunate enough to buy a SSD from OWC, which doesn't require a 3rd party Trim driver to function correctly.

Turns out that Apple has activated a feature in the OS called kext signing or signed kernel extensions.  It's partly a security feature to prevent untested or "unapproved" or altered kernel extensions from loading and potentially harming your system.  If I followed the blogs and postings timeline correctly, this was actually introduced in Mavericks, but my Mavericks install is basically pristine so the external display works as expected.

I found a tool that some folks use to enable 3rd party Trim drivers to allow the use of non-Apple SSD's as boot disks.  However, the side effect is that the process to enable a 3rd party Trim involves globally disabling kext signing.  As an experiment, I tried this tool named Trim Enabler, and after it was installed and executed, it disabled kext signing as expected and after a reboot, my external display magically was detected and is working again!

I realize that this is a brute-force, shotgun approach to re-enabling external displays with Yosemite, and I don't recommend this for anyone else to try at home (or at work) on their Mac, but this is the first alternative I have tried that actually allows me to use my external display again.

And if you think about it, it makes sense - 3rd party video drivers get installed all the time and almost none of the companies will take the time and effort to get them approved by Apple.  Sometime the drivers get modified by application installers or patches, so if they are not pristine or are not on the approved list, they don't get loaded and you can't use your external display anymore.

Something needs to be done so that you can enable specific drivers or kernel extensions, but that's a whole 'nother discussion.

To sum it up, for all of you out there who lost the ability to use external displays after upgrading to Yosemite, you may be able to restore the functionality by using a tool like Trim Enabler to disable kext signing on your Mac.  It's a bit risky and I don't recommend it, but it works.

For me, now I can plug my MBP into an external display or projector when I have to teach another class or give a presentation and not have to lug around a Windows laptop just so I can show stuff on the big screen.

Proceed at your own risk and may the force be with you...

Thursday, July 19, 2012

.Net programming: XAML Designer Activity Errors

Ugh!  After getting asked to join a team working on a .Net project that combines OSISoft PI/AF databases with Windows WF, I started hitting the wall with the XAMLX/XAML designer not loading and displaying the defined workflow using VS 2010.  There is no documentation on the subject and executing Google/Yahoo/Bing searches in any combination of WF, WCF WF, WF Service, Activity Not Loading due to errors in XAML, etc., I finally found something that pertained to my situation.  The change from building for All Platforms to x64.  Our project sponsor recently made it a requirement for x64 target

Apparently, the XAML Designer can't function correctly when the target is x64, so you have to design and initially build for All Platforms or x86, and you can load and see the designer and custom activities.  Once you are ready to due actual testing of your code, then switch back to x64.

Much thanks to this short but excellent post at Stack Overflow that was the answer.  Now only if the folks at MS will fix their official development tool, I might actually use it more often and work on a few more .Net projects.  If not, then I'll happily keep working in the Java and Open Source solution world.

Thursday, November 24, 2011

Citrix Receiver for Mac issues

Ever run into the following error dialog when trying to use applications on a Citrix server:
SSL Error 61: You have not chosen to trust
"XXXX Certificate Authority",
the issuer of the server's security certificate.

Error number: 183

I'm running a MacBook Pro mid-2011 with Mac OS X Lion, and in my case "XXXX" corresponds to Network Solutions.  A project I'm working on has Citrix gateway access to applications, but when I click on one fo the links, I get the error shown above.  I searched the Citrix forums and support pages, and found one article that pertained to the Windows client only, where you had to go into MMC and change some settings to allow pass-thru authentication for all ICA communications.  But there was nothing for Mac (or Linux).  I have the latest version of Citrix Receiver 11.4.3, but there isn't any configuration setting that is even close to what you would do with the Windows client.

I found an old posting from 2003 that pertains to certificates, CTX102462, so I thought I would give this a try since it is easy to backout if the modifications don't work.  A shortcut of the steps are:
1. On a Windows machine that I can successfully  establish a Citrix connection with, I exported the certificate for Network Solutions in DER format.  In my case it was from a Windows 7 VM.
2. renamed the file to have a .crt suffix
3. Opened the keychain access utility on my Mac
4. Imported the .crt file nto my login keychain
5. accessed the Citrix server URL and authenticated
6.  Clicked on an application link, and the application started successfully and I no longer got the error dialog about not trusting the certificate authority on the App Gateway server.

I haven't figured out what to do about my Linux box connecting tot he Citrix server yet - I was getting a similar error when connecting from an Ubuntu Natty Narwhal install.  I guess one OS at a time and I'll post an update if I find a way to get my Linux machine to be able to connect and get successfully authorized to use the available applications...

Thursday, October 13, 2011

Accessing Samba share on OS X server from Windows 7

Arrgghhh!!  Working as a consultant for a local city PUD, I helped setup a Samba fileserver running on a Power Mac with Snow Leopard Server on a Windows Domain.  Connecting from another Mac is trivial.  But try and connect from a windows 7 desktop by browsing the network or searching by NetBios name or IP address keeps coming up with: 

error code: 0x80070035 network path not found.  

Even though the server is on the network and is pingable, and is properly attached to Active Directory, the Windows computer can't find the server...

Ok, now I was able to find the server by using it's IP address in the run search box (not via Windows Explorer - which lists the server on the network, but can't find it when you double click the entry), but cannot authenticate.  The Samba access logs say: [user] FAILED with error NT_STATUS_WRONG_PASSWORD, even though I use my domain login when the login prompt appears.

Solved:
I typed in the FQDN when using Windows Explorer to map the network drive, e.g. \\publicserv..lcl\publicdir, and Windows 7 desktops finally can find the Samba server.  Don't ask me why, but the has to be in all caps, even though on all the Windows machines, the domain is in lowercase.

Tuesday, June 14, 2011

using maven to deploy to Tomcat 7

Ugh! I've been working on a simple webapp for a demo and using Maven for the build process. I was ready to deploy to a stand-alone instance of Tomcat 7 and I started to get a bunch of errors during the build when it came time to deploy to Tomcat. Using the -e switch for maven I started to see messages like:


[INFO] [tomcat:deploy {execution: default-cli}]
[INFO] Deploying war to http://localhost:8084/jasmineproject1
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Cannot invoke Tomcat manager

Embedded error: Server returned HTTP response code: 403 for URL: http://localhost:8084/manager/deploy?path=%2Fjasmineproject1&war=
[INFO] ------------------------------------------------------------------------
[INFO] Trace
org.apache.maven.lifecycle.LifecycleExecutionException: Cannot invoke Tomcat manager
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.maven.plugin.MojoExecutionException: Cannot invoke Tomcat manager
at org.codehaus.mojo.tomcat.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.java:149)
at org.codehaus.mojo.tomcat.AbstractWarCatalinaMojo.execute(AbstractWarCatalinaMojo.java:70)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
... 17 more
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: http://localhost:8084/manager/deploy?path=%2Fjasmineproject1&war=
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436)
at org.codehaus.mojo.tomcat.TomcatManager.invoke(TomcatManager.java:604)
at org.codehaus.mojo.tomcat.TomcatManager.deployImpl(TomcatManager.java:662)
at org.codehaus.mojo.tomcat.TomcatManager.deploy(TomcatManager.java:295)
at org.codehaus.mojo.tomcat.AbstractDeployWarMojo.deployWar(AbstractDeployWarMojo.java:85)
at org.codehaus.mojo.tomcat.AbstractDeployMojo.invokeManager(AbstractDeployMojo.java:85)
at org.codehaus.mojo.tomcat.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.java:141)


Apparently, with Tomcat 7, the manager URL has changed, so deployments from an IDE, a build tool or the command line can't be done the old way.

I took look at the Tomcat documentation for the manager application, and the docs say:

All commands that the Manager application knows how to process are specified in a single request URI like this:

http://{host}:{port}/manager/text/{command}?{parameters}

where {host} and {port} represent the hostname and port number on which Tomcat is running, {command} represents the Manager command you wish to execute, and {parameters} represents the query parameters that are specific to that command.



But when I use the path /manager/text for anything I get a server response of:


FAIL - Unknown command /text


Does anyone know what the correct URL to deploy a webapp to Tomcat 7 is now? For now, I can get away with using NetBeans deploying directly to Tomcat and not using maven to build and deploy, but in the long run that is not a solution...

Update:
Found an obscure link, which I cannot remember off the top of my head, that documented that the URL for using the manager in Tomcat 7 should be /manager/html and not /manager/text as the Tomcat documentation states. Hmm... makes you wonder sometimes if someone actually verifies documentation before publishing it to the world...

Wednesday, June 8, 2011

Jasmine Javascript debugging? Maybe not quite there...

Whew! Sorry about going dark for a while. Am no longer a consulting Tech Architect at Boeing Commercial Aircraft and just started in a SW Architect/Engineer position at Fabric WorldWide...

Inherited the responsibility for writing new and maintaining existing Javascript plugins used in BA/BI of websites. Lot's of interesting asynchronous code, not necessarily strictly adhering to the "X" in AJAX. Since the code loads and executes asynchronously, it is difficult to unit test during the build process. So I have been looking into Javascript testing frameworks that can 1) run headless, i.e. not require a browser; 2) not require jQuery or other framework that supplies DOM access; 3) can test code asynchronously; 4) is compatible with Maven; 5) provides Mock capabilities.

Some candidates were Screw-Unit, jsUnit, QUnit, JSpec, YUI Test, DOH, and Jasmine. For one reason or another they started to drop off the list and that left me with Jasmine. It took a little while to get everything installed correctly into my dev environment and getting Maven configured corectly, but once that was done, it seemed like it would be smooth sailing to test some new code I was writing.

Interestingly, when I had Firebug activated on FF 4.x, I would get a SyntaxError when trying to eval() a regular expression string. I figured I could catch that error in a Jasmine test before it even got to a browser session. Unfortunately, no - Jasmine's Javascript engine does not generate an error when executing eval() on the same string that I sent to the browser. I had been counting on it trapping the error so I could return something informative to the caller, but it looks like I will have to try something else...

So much for trapping and throwing errors in Javascript during unit testing...
SIGH!

Friday, January 15, 2010

Jetspeed-2 and NetBeans 6.8

Well, I have been looking at Open Source portal products that are "easy" to setup and use and yet powerful enough to satisfy an enterprise. I settled on trying Apache Jetspeed-2, since it has licensing that is favorable to a business that might want to use it in a product offering, and it is fully compliant to the Java Portlet Standard 2.0.

Installing the demo version was easy, and it came with a bunch of portlets ready to use. But, I want to be able to create portlets myself and the Java development tool I have been using the past several years is NetBeans.

At first, it seemed as if there would be no support for developing and deploying portlets from NetBeans to Jetspeed-2 or even modifying/building Jetspeed from source. I asked a friend and all he said was "use Eclipse instead!" Which really isn't an option where I'm working these days.

I installed the Generic Portlet plugin and added the Jetspeed-2 server (Tomcat 6 server type) to the Servers list in NetBeans. I created a new Java Web project and chose the Portal Framework, with View only premissions. NetBeans pulled in the Portlet Standard 2.0 libraries along with the Jetspeed-2 libraries and created a portlet source file for me. I thought, "cool, this will be easy.", but the hard part was just beginning. Of course, NetBeans creates an index.jsp file for you, but as I was working along and built the WAR file, I noticed that the portlet.xml file was not continuously updated like the web.xml file does.

After building, I tried to deploy via NetBeans. It works, but it was deployed as a regular web application and not as a portlet for Jetspeed-2. If the server properties for Tomcat allowed you to specify the deployment directory, then NetBeans might be able to deploy the code to the proper place. As it was, I could bring up my code as a web application, but Jetspeed-2 didn't know a thing about it, so it did not show up as an available portlet to add and use.

So for the moment, I have to manually drop the .war file into the /webapps/jetspeed/WEB-INF/deploy/local/ directory in order for my portlet to be usable. I also found that the path to my .jsp files is all messed up because you are deploying your .war file underneath Jetspeed-2, which is itself a web application. So the path I found that worked so nicely and that I was able to specify in my portlet.xml when I deployed dirctly from NetBeans, no longer worked and I kept getting NPE's or path not found errors from Jetspeed. Now that I know the actual path, I have a couple of ways to specify the correct path, but it was such a pain...

Now that I have a basic "Hello World" portlet running, I'll start working on more complicated portlets and plan on posting my experiences with NetBeans and Jetspeed-2. Until then, happy coding!

Friday, September 4, 2009

Modifying Tomcat admin port in xampp control panel

After suffering through several hours of pulling hair and gnashing teeth while trying to figure out how to change the port location for Tomcat, I finally found a solution.

For those of you who work with xampp, the following image should be familiar:




In my installation, I already have a Glassfish server listening on port 8080, so I changed Tomcat to listen on 8082. That works fine, but if I click on the xampp admin button for Tomcat, it sends the browser to the default port (8080) instead of the actual port in use.

I hunted through php.ini files and Googled the heck out of things, but only found references to go to the application's conf/ directory and change the value there. But, alas, xampp control panel knows nothing about these changes. A colleageue at work said he thought he saw a xampp.ini file a long time ago, but it no longer exists, so I thought I would try it, since nothing else in the help, FAQ, or other documentation seems to work.

In the /xampp directory I created a file named xampp.ini and placed the following in it and restarted xampp control panel:


[PORTS]
tomcat = 8082

Then I tried clicking on the Tomcat admin button on xampp control panel, and the browser came up with the correct URL.

Sweet!

oh, yeah, this is on a Windows 2003 Server system in case anyone is curious...

Saturday, August 15, 2009

OpenSSO woes...

We have been using OpenSSO (Fam80b1) in combination with Glasffish and OpenDS v1b008/OpenDSv1.0GA and all has been working fine. Now that we want to upgrade to openSSO 8.0 Enterprise Edition, we have found that all our custom code that works to retrieve user data with a custom schema via both the Sun IDM and our custom IDM are now broken.

The problem lies with the deprecation of AMConfig.properties file, where much vital information is stored and read by OpenSSO on system startup. The API calls that return the information from this file still exist and are not marked as deprecated, and we cannot find alternative API calls to return the same information. The properties we need are com.iplanet.am.directory.host, com.iplanet.am.directory.port, com.sun.identity.authentication.special.users

For now, it appears we cannot upgrade due to the inconsistent deprecation of features + API...

Friday, June 26, 2009

Been to busy...

Been too busy trying to juggle work and an interview schedule that just won't quit... Hopefully, I'll get back on track again later this week.

Friday, May 8, 2009

Amazon.com phone interview

Well, today I had a phone interview for a SDE position at Amazon.com. Unfortunately, I have been putting out fires at work for the past 2 days and really wasn't in a good frame of mind to think about data structures and algorithms and Big O notation. A sample of questions...

Q1. In Java write a function that will scan an array of int for a value that occurs an odd number of times, specifically once, and return the value. Only 1 number in the array will occur an odd number of times, the rest will occur an even number of times. What would be the runtime order of magnitude of this solution?

Q2. Design a set of classes organizing a bank of elevators and to manage and control them.
Use case1: on floor X, a person presses the down button. How do your class designs handle this?
Use case2: a person enters an elevator on 8th floor and presses the button for 2nd floor, but the elevator is still going up. How do your class designs respond to this?

Q3: Given a table that contains company names and revenue columns, with more than one row for each company name. Design a SQL statement that will return only 1 company name and the corresponding total revenue?

Since I wasted too much time on the first question, thinking about what are some elegant ways to solve that problem, but coming up blank - I was still thinking about how to get one of my teams' Dev servers back up on the network and functioning again. I started to come up with a brute-force solution, but we had to move on to other questions. I got through the others fairly well. Of course, after the interview was over and while getting the server to stand up again, I came up with a solution. But by this time, it's an hour too late since the interview was over. Major screw up on my part, but the real world got in the way of preparing for a great opportunity. Amazon will probably never want to talk to me again...

Hopefully, I'll get another chance to speak with them...

Wednesday, April 29, 2009

Starting/stopping Windows services from a script

Ever had a situation where you needed to stop at least one Windows service that also is dependent on other services? I've got one now, where Oracle WCI and BPM Enterprise are running on a box with other more critical services, but eventually, one of the Oracle processes starts running out of control and takes up 100% of CPU and memory. If you can get to the console and eventually login (it take 5 minutes, literally), you see a message box telling you the server has run out of virtual memory.

Normally, we administer the server via remote desktop/terminal server from our desktop or VPN if we happen to be remote. But in this case, the box does not have enough free CPU or memory to even respond to remote connections and someone has to physically go into the server room and shutdown the box (it takes 30 minutes for the box to shutdown) or kill the power (if they don't have a login). Not very good options in any case...

So, I poked around the Microsoft site and thought, "hey, I've created Windows services before with sc.exe, I should be able to stop them from a command window." A great idea, until you try sc.exe to stop a service that depends on other services. You get the dreaded


[SC] ControlService FAILED 1051:

A stop control has been sent to a service that other running services are dependent on.


error message. Worst of all, you won't even see the error if you have written this in a batch script - it'll just fly on by.

I thought, ok, so I have to specify each service in reverse order of dependency in my script. There are 7 services to stop, so I had a line calling sc.exe for each one.


sc.exe stop Tomcat6
sc.exe stop ptautomationservices
sc.exe stop "Ldap server"
sc.exe stop wsserver
sc.exe stop OracleBPMWebApplications
sc.exe stop SQLBrowser
sc.exe stop MSSQL$SQLEXPRESS


Well, only the first service stopped and none of the others. Eventually I found that sc.exe returns immediately, and any dependent services probably haven't even begun to stop, so they fail the stop command. So we have to wait until each service completes stopping.

After Googling around for a while, I eventually came upon sites that pointed out that you have to prepend with "start" like velocityreviews or tek-tips.com suggests:

start /wait sc \\server_name stop service_name1
start /wait sc \\server_name stop service_name2

Great! every call to sc.exe will wait until the command finishes stopping the service befre executing the next one. So I happily went on to modify my script to:


start /wait sc.exe stop Tomcat6
start /wait sc.exe stop ptautomationservices
start /wait sc.exe stop "Ldap server"
start /wait sc.exe stop wsserver
start /wait sc.exe stop OracleBPMWebApplications
start /wait sc.exe stop SQLBrowser
start /wait sc.exe stop MSSQL$SQLEXPRESS


and then executed the batch script, expecting all the services to shutdown gracefully in order.

Wrong! On Windows 2003 Server, it doesn't wait. :-( WTF!!

Again, Tomcat stopped and sometimes the automation services, but I didn't see anything on the screen appear to wait or pause. The script still just flies by. So I Googled around a bunch more... There must be a solution and I can't be the only one trying to do something like this. I found similar issues with the same answers, but no resolution. One suggested, write a WMI script, another suggested write a VB program. What? Just to shutdown services? There has to be a better way.

Then I thought, you can use net \\servername stop servicename from the command line to stop a service on another box over the network, what happens when I do it on the same box? So I tried:

c:\net stop MSSQL$SQLEXPRESS

in a DOS window, and waited...


The following services are dependent on the SQL Server (SQLEXPRESS) service.
Stopping the SQL Server (SQLEXPRESS) service will also stop these services.

Apache Tomcat
BEA ALI Automation Service
BEA ALI LDAP Directory
BEA ALI API Service
Oracle BPM Web Applications
SQL Server Browser

Do you want to continue this operation? (Y/N) [N]:


hmm.... at least it asks me if I really want to do it, so I enter "Y" and cross my fingers:

The Apache Tomcat service was stopped successfully.

The BEA ALI Automation Service service is stopping.......
The BEA ALI Automation Service service was stopped successfully.

The BEA ALI LDAP Directory service is stopping........
The BEA ALI LDAP Directory service was stopped successfully.

The BEA ALI API Service service is stopping.......
The BEA ALI API Service service was stopped successfully.

The Oracle BPM Web Applications service is stopping.......
The Oracle BPM Web Applications service was stopped successfully.

The SQL Server Browser service is stopping.
The SQL Server Browser service was stopped successfully.

The SQL Server (SQLEXPRESS) service is stopping.
The SQL Server (SQLEXPRESS) service was stopped successfully.


it actually works! But what if I don't want the user to have a choice and just force the "y" answer? In my case, the machine is usually not responsive enough for the user to sit around for minutes before being prompted for a "Y" or "N", it just has to work. Is that possible inside a batch script? I still haven't found the answer to that yet, but this is a start...

Update... ( Wed 29 Apr 2009 10:09:20 PM PDT )
to force net stop to not prompt for user input you append /YES, e.g.:


c:\net stop MSSQL$SQLEXPRESS /YES


But, I still have the problem if the server is too busy, it may not be able to keep track of the dependent services to shutdown or the stop command may time out before the service even receives the event. So, I'm probably back to sending each service the shutdown signal:

net stop Tomcat6 /YES
net stop ptautomationservices /YES
net stop "Ldap server" /YES
net stop wsserver /YES
net stop OracleBPMWebApplications /YES
net stop SQLBrowser /YES
net stop MSSQL$SQLEXPRESS /YES

at least my user will be able to see the progress (or lack thereof) while the server attempts to stand itself back up.

Tuesday, April 21, 2009

Flying a dream

Wow, sounds like the Boeing 787 Dreamliner might actually fly before the end of the month! Finally, some great news after all the production delays.

Oracle BPM and WebCenter Interaction install saga

A short rant about installation and configuration documentation...


One of my projects requires Oracle BPM Enterprise 10g Standalone (used to be BEA ALBM, AquaLogic BPM before that, and Fuego BPM originally) integrated with the Portal, Oracle WebCenter Interaction 10g. Being in more of an Application Architect role rather than a Sys Admin, I don't normally get hands-on installing software on servers, unless it is for a proof-of-concept. The team needed a development instance to work against, so I volunteered to configure the server with an Oracle consultant's assistance.


Sometimes installation instructions are really good and other times they really suck. Usually, its one or the other, but the Oracle installation instructions were both at the same time. BPM Enterprise had references to software versions 6.5, 10g, and 10.3.1 – please try to get at least your version numbers in your documentation that you provide to your users consistent! Come to think of it, so did WebCenter Interaction...


The consultant and I spent a week trying to get WebCenter Interaction 10g and BPM Enterprise 10g Standalone to 1) install correctly, and 2)integrate with each other, without success. During the second week, I managed to find some obscure documentation that just happened to be the key to solving our issue, but it was so late at night and I was so tired, I still can't figure out how I found this jewel of information on the Oracle site. All I know is Google is a wonderful search tool.


The 2 Oracle consultants, installing the software in two different parts of the company I work at, were running into the same issues. Somehow, I had stumbled upon the solution even before the Oracle guys heard about it. In the configuration guide in docs65 for Oracle BPM 10.3, there is a section describing how to configure BPM to use the directory service provided by WebCenter Interaction. The guide says:

Principal Specifies the principal or ID used to connect to the ALI LDAP

provider. For example, uuid= ali_admin_user,ou=osers,dc=oracle,dc=com

We tried that and failed. We tried all sorts of Oracle/BEA/AquaLogic passwords and no soap. Each time resulting in an unusable BPM installation, so it's time to uninstall, reboot, reinstall, etc. Oh yeah, we are on Windows 2003 Server platform... other people who use that server are getting annoyed with all the reboots...

After all this going on for a whole week, in the middle of the second week, I VPN from home to try this little piece of information I found on the Oracle website. For the LDAP config, it's not “ou=osers,dc=oracle,dc=com”, but it is “ou=users,dc=bea,dc=com”. And like magic, BPM is able to integrate with the Directory Services provided by WebCenter Interaction. Hmm... I guess it's a BEA product after all.


Two days later, the other consultant lets me know he has found a way to install the products successfully, but tells me that it's not official, because its not documented anywhere. 10 guesses what the magic phrase is (and the first 10 don't count). Yup, exactly what I found 2 nights before. Now somebody tell me why I had to find this information?


Ok enough venting... I feel much better now...

Oracle Buys Sun - is this good for Java and Open Source?

After tap dancing with IBM for the past few months, now it looks like Oracle is about to purchase Sun Microsystems and some of my colleagues at work are wondering if this is a good thing or not. We work with some of the Java-based Open Source applications sponsored by Sun and bundle 3 of them - OpenDS, OpenSSO, and Glassfish, into a product offering for our customers who desire a non-commercial solution, free of up front/annual fees and restrictive licensing. We also use the NetBeans IDE in our work to customize and bundle the 3 applications into a single solution; and we use MySQL in other projects...

What happens to these and other Open Source products once Oracle closes the sale? We can only hope that Oracle will continue the Open Source initiatives sponsored by Sun and fully support the JCP process as well...