Posted by: peteinman | July 21, 2009

TCP TIMED_WAIT

Set this to 30s on the IIS servers and LPD server

http://msdn.microsoft.com/en-us/library/ms819739.aspx

The TcpTimedWaitDelay registry value under the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

key can be used to alter the default setting.

Windows Server 2003 TCP/IP allows this value to be set as low as 30 seconds, which should not cause problems in most environments, or as high as 300 seconds.

Posted by: peteinman | June 10, 2009

Fame

I finally become …urrm, sort of famous!

http://www.ca.com/us/success/collateral.aspx?cid=205354

Posted by: peteinman | June 4, 2009

Configuring WebLogic ISAPI Plug-in On IIS 7 (Vista)

I thought this task was going to be harder than it actually was. I always found configuring the plug-in on IIS6 a bit hit and miss so expected more issues with IIS7.

I’ve not done this on any server products yet, so this is just on Windows Vista Business SP2.

Install ISAPI Filters Module on IIS

The first thing you need to do is ensure that you have installed the ISAPI filters module on IIS as per the details here: ISAPI Filters Module Installation 

Just go down to the “How To” section of that page.

IIS Configuration

When you start the IIS configuration manager in Vista, you should end up with a screen which looks something like this, with the two new shortcuts for ISAPI configuration

image

These two!

image

You should have a default website enabled, and I’m going to assume that you want to proxy ALL requests which hit this IIS server through to a WebLogic server.

I’m also going to assume that you have a working IIS proxy configuration on an older version of IIS and are just moving to 7 as I don’t want to get into the nuts and bolts of configuring the IIS proxy!

The first thing I did was to set the home directory for my “Default Web Site” to be a folder where my iisforward.dll, iisproxy.dll & iisproxy.ini files were located. For this article I will assume this folder is c:\domains\iisplugin.

You get to this using the following screens using the right-click.

image

Select the advanced settings option and then set the property “Physical Path” to something like

image

Now, select the default web site and double click on the ISAPI Filters shortcut

image

You’ll be presented with an empty list. From here, if you right click and select Add, you’ll get the following.

image

Enter the following:

Filter Name: wlforward

Executable: c:\domains\iisplugin\iisforward.dll

Once that’s done, go back to the default website home, so you get the following screen

image

Double click, Handler Mappings and you’ll see something like this

image

From this screen, if you right click and select “Add Script Map”

image

you’ll get a screen as shown

image

Enter the following:

Request Path: *.wlforward

Executable: c:\domains\IISPlugin\iisproxy.dll

Name: IIS Proxy

You should then get a dialog box displayed which you should answer YES to.

image

Once you’ve done that, restart IIS and provided that the iisproxy.ini file is configured correctly, you should be able to access your weblogic server application.

That’s it!

Posted by: peteinman | January 30, 2009

Deployment Error NoClassDefFound

I had this today and I’ve had it a few other times when deploying an application on Weblogic 8.1.

java.lang.NoClassDefFoundError: org/apache/oro/text/perl/Perl5Util

A bit of a weird error as the application looked like it deployed, but actually failed.

What this turned out to be was a missing ANT folder.

I’d had a compatibility issue between WebLogic 8.1 and ANT 1.7 which meant I had to rename the ANT directory in the WebLogic distribution.

Anyway, putting “c:\bea\weblogic81\server\lib\ant” directory back solved it.

Posted by: peteinman | January 6, 2009

Changing the case of windows computer name

If you’ve ever had the need to change the case of the windows computer name assigned during installation, you’ll know it can be a right pain.

I discovered two registry settings which achieve the desired result.

HKLM\System\CurrentControlSet\Services\TCPIP\Parameters\Hostname

HKLM\System\CurrentControlSet\Services\TCPIP\Parameters\NV Hostname

Change these and then reboot, the machine will have new upper case name you’ve chosen.

I wouldn’t recommend actually changing the name here and I’ve never done it, but certainly for case changing it’s perfect.

Posted by: peteinman | December 23, 2008

Subversion Migration from VSS and some Merge Issues

Earlier this year we moved our source control system from Visual Source Safe (VSS) to Subversion 1.4.

That was probably one of the best ideas we’d had this year! VSS was hopelessly inadequate to handle any sort of branching model that suited java development and our project structure.

When we originally created our subversion repository, we were running SVN 1.4 and after a few months ended up suddenly finding out what all the fuss was with the future plans for SVN1.5 and merge tracking. Keeping track of merges manually wasn’t much fun.

We run a stable trunk approach to subversion and all work on a release is done on a branch.

Release builds at the moment are actually built from the branch, which arguably isn’t good practice, but at the moment it works for us.

Once the release has been performed, the branch is merged down to the trunk – and we *should* run unit tests and a build on the trunk to verify it’s actually ok. In practice that doesn’t happen as much as it should but it is in our plans to do that formally.

1.5 Upgrade

The 1.4.* -> 1.5 upgrade was the smoothest upgrade I’ve done for some time, it worked beautifully.

I’m not sure why, but it took me a few days to find the "svnadmin upgrade" command to actually upgrade the repository to the 1.5 format which enabled merge tracking etc.

For some reason I seemed to miss the "svnadmin upgrade" command, so once that was run, the repository was at 1.5.

What else was there to do?

When I started doing the first branch-branch merges, I found I was having to specify revision numbers and wondered where the benefit of merge tracking came in.

After a few merges needing revision numbers, things started to improve and my branch-branch merges are done simply using the merge tracking features in the following command

>>svn merge http://mysvnserver/mysourceurl .

What was different?

I suddenly started to spot directories being updated in my commits and found that these had the mergeinfo property set, and it was this that was controlling what had merged and what hadn’t.

Cool, so merge tracking had started to work.

Anyway, the time came to merge down to the trunk after a release

Woah, loads of files merged and conflicted going back right to revision 1, what had happened?

Seems that the mergeinfo property wasn’t set on any of the trunk folders and after some digging found that the "–record-only" option of "svn merge" was the feature which would update all my folders in the trunk and mean that I could finally use the full merge tracking features of 1.5.

Not sure why I’ve written this now, but I have so may as well publish it!!!

Technorati Tags: ,,
Posted by: peteinman | September 9, 2008

StreamCorrupted Exception

I received the following stack trace whilst doing some JMX development with Aqualogic Service Bus.

Caused by: java.rmi.UnmarshalException: failed to unmarshal class weblogic.security.acl.internal.AuthenticatedUser; nested exception
is: java.io.StreamCorruptedException: invalid type code: 31
     at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:229)
…..

Caused by: java.io.StreamCorruptedException: invalid type code: 31

Turns out that this was a change in ClassLoader.loadClass() handling byte array and you need to add the following system property to the JVM start command.

-Dsun.lang.ClassLoader.allowArraySyntax=true

It is also discussed here Sun Bug

Technorati Tags: ,,
Posted by: peteinman | August 20, 2008

WebLogic JMS Bridge Debug Flags

I always find myself forgetting these and then spending ages hunting for them, so thought I’d post them here.

Add these to the JVM start arguments of WLS 8.1 and you’ll get bridge debugging information.

-Dweblogic.Debug.DebugMessagingBridgeStartup=true
-Dweblogic.Debug.DebugMessagingBridgeRuntime=true

Posted by: peteinman | July 23, 2008

Controlling consumers with ALSB 3.0 JMS proxy services

Technorati Tags: ,,

Overview

Over the past few months I have been implementing ALSB 3.0 along-side a WebLogic 8.1 environment which has been running for around 5 years, originally starting on WLS 7.0.

When I went through performance tuning and deployment of MDB’s in WLS8.1, something I paid attention to was consumers on the queue, as the wrong amount could have negative effects on performance. More consumers also means more JMS threads for the JVM to worry about managing.

I ended up with some MDB’s only having a single consumer, and some having 4 or 5. This meant that I could meet the performance expectations without killing the system – or the destination system if the MDB made a call to another part of the infrastructure, say LPD or E-Mail, even SOAP.

 

Where do you configure consumers in ALSB 3.0?

Learning about how ALSB 3.0 works has been very “on the job” for the past few months. WLS10 was also a new app server to get used to, and it’s quite different to WLS8.1, I simply haven’t had the time to learn WLS10 with everything else that’s going on.

I’ve probably learnt parts of ALSB the hard way – why you really should use the domain configuration wizard when creating an ALSB cluster rather than do it manually for example!!

Anyway, back to consumers.

When you initially create a JMS proxy service and target it to a queue, it will deploy 16 consumers by default. This may be Ok for some applications, but I wanted a way to reduce that and therefore reduce the risk of all 16 consumers going active at once.

What I was hoping to find was an equivalent to the <max-beans-in-pool> deployment descriptor setting or an equivalent somewhere, but after extensive searching I didn’t find anything.

I found references to work managers, which talked about setting thresholds on max threads etc, but to me, coming from a WLS 8.1 environment, thread pools were something you used to assign a web app or other process to, so that you didn’t run out of threads in the default thread pool. They weren’t used for restricting consumers on a JMS queue. They could be I suppose, but then you’d end up with pending requests on the thread pool as you would have more consumers than available threads which isn’t ideal.

After some more reading and actually trying it out, it seems that work managers really are the way to go with controlling consumers on JMS proxy services.

Creating a work manager.

Basically, what you do – on the ALSB environment, using the WebLogic console create a work manager. When asked – a standard work manager will do.

Once you’ve gone through all the screens, you can then select the work manager, and then add a “Maximum Threads Constraint”.

Now, you need to edit the proxy service in ALSB, and assign a dispatch-policy, which is the work manager you created above, and all being well, this should appear in the drop-down list. If it doesn’t, something has gone wrong when it was created.

That’s all there is too it, you now have a reduced number of consumers on the JMS destination.

There is a very nice article here OSB and Thread Pools together with documentation here OSB and Thread Pools Documentation which explains this, and also includes nicer diagrams than mine!

Hope this post is remotely useful!

Older Posts »

Categories