User: stark
Date: 01/03/13 22:43:53
Added: src/main/org/jboss/test/naming TestExternalContext.java
Log:
Tests of the ExternalContext naming mbean
Revision Changes Path
1.1
jbosstest/src/main/org/jboss/test/naming/TestExternalContext.java
Index: TestExternalContext.java
===================================================================
package org.jboss.test.naming;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Set;
import javax.management.ObjectName;
import javax.management.RuntimeMBeanException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import org.jboss.jmx.interfaces.JMXConnector;
import org.jboss.jmx.client.RMIClientConnectorImpl;
/** A test of the ExternalContext naming mbean. To test there needs to be
one or more ExternalContex mbeans setup. An example filesystem context
setup would be:
<mbean code="org.jboss.naming.ExternalContext"
name="DefaultDomain:service=ExternalContext,jndiName=external/fs/tmp">
<attribute name="JndiName">external/fs/Scott</attribute>
<attribute name="Properties">tmp.fs</attribute>
<attribute name="RemoteAccess">true</attribute>
</mbean>
where tmp.fs is a Properties file containing:
# JNDI properties for /Scott filesystem directory
java.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory
java.naming.provider.url=file:/tmp
@author [EMAIL PROTECTED]
@version $Revision: 1.1 $
*/
public class TestExternalContext extends junit.framework.TestCase
{
private ObjectName[] contextNames;
private JMXConnector connector;
public TestExternalContext(String name)
{
super(name);
}
protected void setUp() throws Exception
{
try
{
contextNames = null;
String serverName = InetAddress.getLocalHost().getHostName();
connector = new RMIClientConnectorImpl(serverName);
ObjectName pattern = new ObjectName("*:service=ExternalContext,*");
Set names = connector.queryNames(pattern, null);
Iterator iter = names.iterator();
ArrayList tmp = new ArrayList();
while( iter.hasNext() )
{
Object name = iter.next();
System.out.println(name);
tmp.add(name);
}
if( tmp.size() > 0 )
{
contextNames = new ObjectName[tmp.size()];
tmp.toArray(contextNames);
}
}
catch(Exception x)
{
x.printStackTrace();
if (x instanceof RuntimeMBeanException)
{
((RuntimeMBeanException)x).getTargetException().printStackTrace();
}
}
}
public void testExternalContexts() throws Exception
{
if( contextNames == null )
{
System.out.println("No ExternalContext names exist");
return;
}
InitialContext iniCtx = new InitialContext();
for(int n = 0; n < contextNames.length; n ++)
{
ObjectName name = contextNames[n];
String jndiName = name.getKeyProperty("jndiName");
if( jndiName == null )
{
System.out.println("Skipping "+name+" as it has no jndiName
property");
continue;
}
Context ctx = (Context) iniCtx.lookup(jndiName);
System.out.println("+++ Listing for: "+ctx);
list(ctx);
}
}
private void list(Context ctx) throws NamingException
{
NamingEnumeration enum = ctx.list("");
while( enum.hasMore() )
System.out.println(enum.next());
enum.close();
}
public static void main(String[] args) throws Exception
{
System.setErr(System.out);
System.setSecurityManager(new SecurityManager());
TestExternalContext test = new TestExternalContext("main");
test.setUp();
test.testExternalContexts();
}
}