Thursday, August 30, 2007 at 3:02 pm by Eric Hulbert
COM Object Issues on Windows 2003 (URLFetch)

With the passage of time, there is always technological challenges that crop up for existing clients, which is why as a managed service provider we step in to eagerly correct issues so our clients need not (after all, this is what they are paying us for.) These challenges manifest themselves either through user growth, hardware limitations or in worse case scenarios: hardware failures. Recently our monitors noticed that a five year old Windows 2000 Server was about to start digging a little virtual six-foot-deep grave and this is where we stepped into the challenge.
I quickly stabilized their old server allowing it to keep running while we worked on a migration to a new solution. While this was happening, Jeremy (our beef-jerky-loving sales representative) sold the client one of our new dedicated managed HP c-Class BladeSystem servers. The web server will be migrated to Windows 2003 and the SQL server migrated to SQL 2005 on Windows 2003 as well. Additionally, I replaced their old Cisco PIX 501 firewall.
After the migration of content, I began setting things up, including the VPN tunnels to the third party development company and the integration with the billing system. Once this was completed, I began full regression Quality Assurance.
After testing, it was quickly discovered that the integration with the billing engine was not working. The reason was the rather old code (Active Server Pages, ASP, version 3.0) which had been written by a third-party development company back in 1999. The code they produced relied on a component called URLFetch, which didn’t work inside of the new operating system environment.
Here is the particular code call:
This component is a COM Wrapper for a few lines of Java code that allow you to, basically, screen scrape sites and return them for use in the code. Since the billing system is on an internal network behind firewalls and a VPN, it can’t be served up direct to the end-user, so it has to be done from the code on the web server. Since this was an old component it was pretty much assumed that it wouldn’t work on Windows Server 2003 and IIS 6.
The research began about this component and the specific error that was being thrown by the code, which was:
ActiveX component can’t create object
I quickly found this Microsoft Knowledge base (KB) article and grabbed filemon from sysinternals to check it out.
Using depends.exe (from Dependency Walker) I looked into finding the missing .dll that I figured was trying to be loaded behind the scenes. This was confirmed and the missing dependent file was DWMAPI.dll.
From there a little more research uncovered another team having difficulty with the same situation. From this information the .dll was found and downloaded.
However, this new .dll didn’t produce results and I had to start again, from ground-zero.
It was at this point that I began to deduct that this old component would not work on the Windows 2003 and IIS6. We then contacted the client and gave them the harrowing news that the possibility that they may need to re-write their code existed. Even in the face of this possibility, we wanted to assure that all avenues had been explored and I continued researching. Next was to review the component itself and how it was written - to define what dependencies it required. This additional digging uncovered the following information:
This was the final ‘a-ha!’ moment. I then quickly downloaded the Microsoft Virtual Machine and voilà, it worked! (The new SUN Java SDK was already tried before this and it didn’t work.)
The end result: The client’s code now works great, on the new environment, with no need to update the code-base and I got to celebrate the moment with a Dr. Pepper.
Article Archives:
Virtualized for Non-Profit
Opus Interactive has virtualized 22 of their servers in a effort to upgrade internal systems. Instead of trying to sell the servers, or reprovision them, Opus Interactive decided the best thing to do is to donate them to Omni Media Networks Inc. The donated servers were needed in an effort to expand Omni Media Networks Internet outreach programs. Opus Interactive is very [...]
July 1st, 2008
If a tree gets planted in the forest will anyone hear?
Opus Interactive has joined with Arbor Day Foundation in their mission to “…inspire people to plant, nurture and celebrate trees.” Arbor Day Foundation is the largest nonprofit tree-planting organization, with nearly one million members and averages over 12 million trees planted each year.
So with that, the question becomes with almost 12 million trees each year, why [...]
June 16th, 2008
Protecting the minds and hearts of our children with OpenDNS
There is no argument that there is a lot of crap on the Internet. And I am not referring to poorly designed web sites, time wasting games and an overabundance of news about absolutely everything. The deep, dark alleys of the Internet (and sometimes not all that far removed) are filled with pornography, crime, drugs, [...]
June 9th, 2008
Interop Las Vegas 08 Photo Journal
Interop Las Vegas 08 . The adventures over the course of 5 days. Below you will see somethings you wish you didn’t and other you are glad to see. Enjoy.
Arrived at the MGM Grand Hotel Checked in Room #4136. Look at that view.
Well what would Vegas be like without a little gambling? Eric at his first slot [...]
May 22nd, 2008
Smokeping on FreeBSD 7
This write-up assumes a working copy of FreeBSD 7.0. It was built using 7.0-RELEASE. It should work on FreeBSD 6.x-STABLE and future versions of FreeBSD 7. The package versions listed were current as of this writing but may have been updated by the time someone uses this howto.
This is a basic setup of Smokeping. There [...]
April 24th, 2008
Installing MySQL4 and MySQL5 on a single FreeBSD 6.2 Server.
This write-up makes the following assumptions:
Working copy of FreeBSD 6.2.
Build: 6.2-RELEASE.
Which should work on 6.2-STABLE and 7.0 as well.
Please let me know if you run into typos or other technical issues when implementing this.
Download the latest binaries from mysql.com.
At write-up time this was:
mysql-5.0.45-freebsd6.0-i386.tar.gz
mysql-standard-4.1.22-unknown-freebsd6.0-i386.tar.gz
Install MySQL 4.
Uncompress the binary source.
# cd /usr/local
# gunzip < [...]
March 11th, 2008
Article Comments:
SECOND!… wait, that’s not right.
Posted by Lynn
Friday, August 31, 2007 at 3:15 pm