J2SE: 1.4.1 boosts garbage collection
A pretty good article on 1.4.1 GC from
JavaWorld.
Other 1.4.1 GC Tutorials:
1. From
java.sun.com.
2. From
Wireless Java. Note that this replaces the famous GC Article for
1.2.23. From
JavaPerformanceTuning.
Some Benchmarks:
1. From
JavaLobby.
2. From
NetBeans.
posted by Kumar at 6:10 PM
JSF: EA3 Released
JavaServer Faces Early Access 3 has been posted at java.sun.com. Tutorial for JSF is available
here.
posted by Kumar at 10:03 PM
Weblogic: Starting ManagedServer Programmatically
Weblogic6.1 Node Manager do *not* attempt to restart a Managed Server when its goes down or provide a mechanism where user can use some compand line tool to start the managed server using Node Manager. The following is the example code to start a managed server using nodemanager programmatically. This code when used in combination with script that detects when a server goes down (Example: SNMP management tools which get a trap when managed server goes down), will automate server restart when a problem occurs.
Tested with weblogic6.1SP4.
import java.util.Properties;
import javax.naming.Context; import javax.naming.InitialContext;
import weblogic.management.MBeanHome; import weblogic.management.configuration.ServerMBean;
/** * This tools starts a managed server when node manager corresponding * to that server is already running. * Usage : StartManagedServer -adminurl <> -user <> -pass <> -domain <> -managedserver <> */
public class StartManagedServer {
public static void main(String[] args) {
ServerMBean serverMBean = null;
String url = "t3://localhost:7001"; String username = "system"; String password = "password"; String domain = "yourdomain"; String managedServer = "Server1";
int i = 0;
try {
for (; i < args.length; i++) {
if (args[i].equals("-adminurl")) url = args[++i];
else if (args[i].equals("-user")) username = args[++i];
else if (args[i].equals("-pass")) password = args[++i];
else if (args[i].equals("-domain")) domain = args[++i];
else if (args[i].equals("-managedserver")) managedServer = args[++i]; } } catch (ArrayIndexOutOfBoundsException aio) { log("Missing value for arguement '" + args[--i] + "'"); log("Usage : StartManagedServer -adminurl <> -user <> -pass <> -domain <> -managedserver <>"); return; }
try {
Properties props = new Properties(); props.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); props.put(Context.PROVIDER_URL, url); props.put(Context.SECURITY_PRINCIPAL, username); props.put(Context.SECURITY_CREDENTIALS, password); Context ctx = new InitialContext(props);
MBeanHome home = (MBeanHome) ctx.lookup("weblogic.management.adminhome"); serverMBean = (ServerMBean) home.getMBean(managedServer, "Server", domain);
} catch (Exception e) { log("Exception in getting Admin home & serverMBean: " + e); }
try { log("Sending a start command to the AdminServer ..."); serverMBean.start(); } catch (weblogic.rmi.extensions.RemoteRuntimeException rre) { //The java.io.Reader returned which is not serializable :-) log("Ignorable Exception occured ..."); } catch (Exception e) { //InsufficientConfigurationException?? Couldn't find JavaDocs for exception //mentioned in javadocs.:-) log("Unexpected exception: " + e); return; }
log("NodeManager initiated the server");
} private static void log(String s) { System.out.println(s); } }
|
Starting
weblogic7 Node Manager attempts to restart a Managed Server whose health state is "failed".
posted by Kumar at 5:20 PM
Weblogic: 8.1 Available for Download
Today BEA announced public availability of 8.1Beta. Here are some of the cool features of weblogic server 8.1Beta:
1. Custom Classloading for J2EE Modules: Way cool compared to some of the ideas introduced in JBoss3.X.
2. Application-Level Class Library(APP-LIB/lib): Pretty cool Idea and should have been part J2EE spec long time back.
3. Node Manager Improvements: 7.0 made node manager useful for the first time and this is another step in the right direction.
4. appc Compiler: Provides a single tool for compiling and validating EAR, EJB-jar's and war file. Pretty nice tool but too bad most of the builds needs to be changed (at least in current beta form) as they use weblogic.ejbc(anyway weblogic.ejbc is just deprecated. So looks like I will continue using it for sometime).
5. Ability to redeploy just an EJB in an EAR file: Need to checkout how to do this. Not obvious from first look.
6. Assigning an EJB to a Configured Execute Queue: Earlier this has to be donw while doing EJBC which sounded pretty lame Idea. Now this is part of weblogic-ejb-jar.xml which is similar to weblogic.xml entries in case of web app.
posted by Kumar at 10:02 PM
General: Redirecting Std err
Most Java Programmers I know are unaware of how to redirect Stderr to a file. Here is a 1 minute tutorial on the same. For both Unix and Windows:
When writing shell scripts, you can control input/output redirection. Input redirection is the ability to force a command to read any necessary input from a file instead of from the keyboard. Output redirection is the ability to send the output from a command into a file or pipe instead of to the screen.
Each process created by a shell script begins with three file descriptors associated with it:
You can use the file descriptor numbers 0 (standard input), 1 (standard output), and 2 (standard error) together with the redirection metacharacters to control input and output in the Bourne and Korn shells.
Bourne and Korn Shell RedirectionDescription | Command |
---|
Take STDIN from file | <file, or 0<file |
Redirect STDOUT to file | > file, or 1>fileRedirect STDERR to file | 2> file | Append STDOUT to end of file | >> file | Redirect STDERR to STDOUT | 2>&1 | Pipe standard output of cmd1 as standard input to cmd2 | cmd1 | cmd2 | Use file as both STDIN and STDOUT | <> file | Close STDIN | <&- | Close STDOUT | >&- | Close STDERR | 2>&- | |
When redirecting STDIN and STDOUT in the Bourne and Korn shells, you can omit the file descriptors 0 and 1 from the redirection symbols. You must always use the file descriptor 2 with the redirection symbol.
The 0 and 1 file descriptors are implied, and not used explicitly for the C shell. The C shell representation for standard error (2) is an ampersand (&). STDERR can only be redirected when redirecting STDOUT.
C Shell Redirection MetacharactersDescription | Command |
---|
Redirect STDOUT to file | > file |
Take input from file | < file |
Append STDOUT to end of file | >> file |
Redirect STDOUT and STDERR to file | >& file |
Append STDOUT and STDERR to file | >>& file |
For windows:
The command shell provides facilities to change the default stream input and output. These facilities are accessed by placing special command redirection symbols in a command.
Windows Command Redirection SymbolsSymbol
| Description
|
---|
>file
| Redirects command output to the file specified. You can also use a standard device name such as LPT1, CON, PRN or CONOUT$ as the file name. Any preexisting contents of the file are lost.
|
>>file
| Redirects command output to the file specified. If the file already exists, all command output is appended to the end of the file.
|
<file
| Redirects command input from the file specified. You can also use a standard device name such as CON or CONIN$.
|
2>file
| Redirects command error output to the file specified. You can also use a standard device name such as LPT1, CON, PRN or CONOUT$ as the file name. Any preexisting contents of the file are lost.
|
2>&1
| Redirects command error output to the same location as command output. This makes any command output redirection also apply to command error output.
|
cmd1 | cmd2
| Pipes the command output of cmd1 to the command input of cmd2. Multiple pipe characters are allowed, creating a chain of commands, each sending output to the next command in the chain.
|
posted by Kumar at 9:16 PM