Java



This page is powered by Blogger. Isn't yours?
Friday, March 07, 2003
 

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.2
3. From JavaPerformanceTuning.

Some Benchmarks:
1. From JavaLobby.
2. From NetBeans.

Wednesday, March 05, 2003
 

JSF: EA3 Released


JavaServer Faces Early Access 3 has been posted at java.sun.com. Tutorial for JSF is available here.

 

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".



Monday, March 03, 2003
 

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.


 

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:
0 stdin
1 stdout
2 stderr


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 Redirection
DescriptionCommand
Take STDIN from file<file, or 0<file
Redirect STDOUT to file> file, or 1>file
Redirect STDERR to file2> file
Append STDOUT to end of file>> file
Redirect STDERR to STDOUT2>&1
Pipe standard output of cmd1 as standard input to cmd2cmd1 | cmd2
Use file as both STDIN and STDOUT<> file
Close STDIN<&-
Close STDOUT>&-
Close STDERR2>&-

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 Metacharacters
DescriptionCommand
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 Symbols
Symbol
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.