Win a copy of Java EE 8 High Performance this week in the Java/Jakarta EE forum!

George Brown

Ranch Hand
+ Follow
since Sep 26, 2000
Cows and Likes
Total received
In last 30 days
Total given
Total received
Received in last 30 days
Total given
Given in last 30 days
Forums and Threads
Scavenger Hunt
expand Ranch Hand Scavenger Hunt
expand Greenhorn Scavenger Hunt

Recent posts by George Brown

I highly recommend looking at the xfce 4 desktop environment, which is based on the GTK+ toolkit v2. It's very fast and lightweight, and I've had no problem with windowing apps running within it.
13 years ago
Incidentally, the NPTL thread library is designed to be compatible with the old LinuxThreads implementation, but since the older implementation did not strictly follow the POSIX standard some changes to existing code may be required, and one of the changes that is conformant with the POSIX standard is that getpid() now returns the same value in all threads. As you correctly point out, in the LinuxThreads implementation each thread has its own PID, so each different thread's call to getpid() will return a different PID.
13 years ago
The continuing history of Linux threading is IMO an interesting one, and should answer your question, so here's a potted history so far.

The original linux thread implementation, called LinuxThreads, was built on a model where each thread was a process in its own right, with a manager thread to control creation and destruction of "threads". However, it didn't scale well, there were bottlenecks, some posix thread features could not be implemented, and the overheads were high. Each thread had its own PID.

Your linux system most likely uses LinuxThreads.

In the rush to improve threading on Linux, the state of which has been one of the main obstacles to Linux being adopted on an Enterprise scale, two main projects worked in parallel (and in competition) hoping to be adopted as the Linux threading model. They are the NGPT project and the NPTL project.

In late 2.4 kernels the NGPT (next generation posix threads) work can be back-ported to the kernel. In this threading model the actual user threads (eg. threads that you spawn in your Java proggie) are different from the kernel threads and scheduled separately. This is generally called the M:N threading model, where there are M threads in the process, and N underlying kernel threads to handle the actual processing. However, this had problems too, with thread priorities, scheduling, and again some posix features could not be implemented.

The threading model in 2.6 kernels is based on the work of the NPTL (Native POSIX Thread Library) project, which implements a 1:1 threading model, ie. one kernel thread for one user thread. This should mean that for each thread that you spawn in your java proggie there will be a kernel thread spawned. The kernel's internal threading infrastructure has also been rewritten to allow the Native POSIX Thread Library (pthreads) to run on top of it (but since Java threads don't exactly match POSIX threads if your interest is in java thread programming this may be irrelevant for you).

It seems that the NPTL project won the day and has secured its place in Linux's future. Hence its appearance in the 2.6 kernel.

Where threading is concerned, the kernel can move each kernel thread from one processor to another in an SMP (symmetric multiprocessing) configuration. This is not possible with independent user threads. The important difference between Linux kernels 2.4 and 2.6 is that with a 1:1 threading model (2.6 kernels) you should get far better performance given a multi-processor machine or a machine with a processor that implements hyperthreading (eg. the Intel Xeon).

This has been good news for Enterprise-class Linux.

[ July 08, 2004: Message edited by: George Brown ]
13 years ago
This message has been cross-posted. Please do not cross-post messages.

The correct place for this to have been posted, and posted once, was the J2ME forum, where it is most likely to get replies. It was also posted there, follow this link to pursue the thread.

I am closing the thread in this forum, please reply in the J2ME forum.
13 years ago

You may want to check out this rpm how-to
It's clear and concise, and should make the workings of rpm a bit clearer.
13 years ago
If you're accessing the database from a bash script, why not just use the mysql client program? IMO it's easier to call it directly, and then process the results in the shell program.
13 years ago
If you still have the original .rpm files for the version that includes the files that you accidentally deleted, try re-installing them, and include the '--force' option when you do.
The '--force' option, as it says in RH9's man pages for rpm, is the same as using '--replacepkgs' and '--replacefiles' so it should let you re-install what you've deleted.
Once you've re-installed the missing files your system should be in the state it was before the accidental delete, so you should be able to '--erase' them then in whatever order you need to.
13 years ago
Thanks Pavan, I'm glad to hear that. Let me tell you the problem in more specific terms...
My test client currently looks like this...

At the moment I get the following error:

I'm not sure why, and this may be nothing to do with the problem that I'm having, but the types generated from the WSDL2Java axis class deal with the WSDL Java packages in reverse (like namespaces) while the Weblogic conversion from WSDL to java puts the package naming in the order specified by the WSDL file.
Has anyone seen this 'missing deserializer' problem before? I wasn't aware that I needed to supply custom deserializers.
Is there a better, alternative way for me to use the axis client classes to get my web service results?
14 years ago
I currently need to connect to a set of Web Services described using a published WSDL file and deployed using BEA's proprietary app server, over SSL, with additional web service password authentication. I can already connect and use the services using the web service client classes provided by BEA. However, I don't want to use those for the client, I'd rather use Axis or some other open source web service package for the client side.
Has anyone achieved this kind of interoperability successfully?
14 years ago
From the best of my knowledge, the LD_LIBRARY_PATH is the name of the shared libraries system environmental variable on Solaris... Is there a similar one on Linux, particularly Red Hat 9.0?
Yes, it's the same environment variable with Red Hat 9.0, so for your setup you should find (native) JMF shared libraries in /usr/java/JMF-2.1.1e/lib
The applet may be complaining that it can't find the java classes from the jmf.jar, are you starting your browser from the same shell that you ran 'source' in?
14 years ago
I am considering a workaround to a problem in an existing system. The system relies upon a C++ shared library, written by the customer and loaded by my JVM using System.loadLibrary(). Unfortunately the library intermittently blows up, taking the entire JVM with it.
The customer, unfortunately, can't be trusted to reliably fix their own library, so I need to find a way of dealing with the library's faults until the library code can be fixed.
I am considering spawning a second JVM from the first using Runtime.exec(), with the second JVM loading the dodgy library, and accepting requests through either a socket or RMI, and returning the results the same way. That way when the library blows up the first JVM isn't taken down with it, and the spawner can re-spawn the second JVM when it realises that it has disappeared.
It's a desparate situation requiring desperate measures, but something needs to be done. Can anyone suggest a better alternative?
14 years ago
You will need to add the jarfile paths to the CLASSPATH environment variable, delimited by the ':' character, as in the PATH environment variable. For jar files on the CLASSPATH you will need to include the name of the jar file at the end of the path, for example if you have two jars in /usr/local/lib called aa.jar and bb.jar respectively that you want your JVM to have access to, your CLASSPATH will need to be set somthing like the following(done here in the style of your existing .profile) :
14 years ago
You wouldn't need to uninstall shorewall, just change which services are started at boot time to make sure that shorewall isn't started by default. Then you can run guarddog to configure your firewall. I had a quick look at guarddog and it looks as though guarddog is a GUI to manage the iptables, so it's doing ostensibly the same as shorewall (except it does it via X windows).
The easy way to disable shorewall at boot time is to type the following at the root user's command prompt:
chkconfig shorewall off
[ November 18, 2003: Message edited by: George Brown ]
14 years ago
This thread is a tad confusing since the article doesn't mention CSS as far as I can see. The use of Cascading Style Sheets is an example of good sense, I'd be surprised to CSS fall out of 'fashion'.
14 years ago
I believe shorewall is installed as the firewall package (it's iptables-made-easy) by default with mandrake 9.1, check out the shorewall website for more info. There's a great mailing list for shorewall too, with a very fast turnaround on shorewall problems.
To get things set up the way you want them you should get acquainted with the shorewall documentation first. You will need to edit some of the shorewall configuration files to change the setup.
I'm not sure what version is installed with mandrake 9.1, open a terminal session and type:
rpm -qa|grep shorewall
to find out. When you know the version that's installed you can read the appropriate section of the website.
I hope that helps.
14 years ago