1 7 package org.jfox.manager.console; 8 9 import java.util.ArrayList ; 10 import java.util.Collection ; 11 import java.util.Collections ; 12 import java.util.Comparator ; 13 import java.util.List ; 14 import javax.naming.Binding ; 15 import javax.naming.NamingEnumeration ; 16 17 import org.jfox.ejb3.EJBBucket; 18 import org.jfox.ejb3.EJBContainer; 19 import org.jfox.entity.EntityManagerFactoryBuilder; 20 import org.jfox.entity.EntityManagerFactoryBuilderImpl; 21 import org.jfox.entity.EntityManagerFactoryImpl; 22 import org.jfox.framework.Constants; 23 import org.jfox.framework.Framework; 24 import org.jfox.framework.annotation.Service; 25 import org.jfox.framework.component.Module; 26 import org.jfox.mvc.ActionSupport; 27 import org.jfox.mvc.Invocation; 28 import org.jfox.mvc.InvocationContext; 29 import org.jfox.mvc.PageContext; 30 import org.jfox.mvc.WebContextLoader; 31 import org.jfox.mvc.annotation.ActionMethod; 32 import org.jfox.mvc.validate.StringValidation; 33 import org.jfox.util.SystemUtils; 34 35 40 @Service(id = "console") 41 public class WebConsoleAction extends ActionSupport { 42 43 @ActionMethod(successView = "console/sysinfo.vhtml") 44 public void doGetSysinfo(InvocationContext invocationContext) throws Exception { 45 PageContext pageContext = invocationContext.getPageContext(); 46 pageContext.setAttribute("jfoxVersion", Constants.VERSION); 47 pageContext.setAttribute("webServerVersion", invocationContext.getServletContext().getServerInfo()); 48 pageContext.setAttribute("jvmVersion", SystemUtils.JAVA_VERSION); 49 pageContext.setAttribute("jvmVendor", SystemUtils.JAVA_VENDOR); 50 pageContext.setAttribute("osName", SystemUtils.OS_NAME); 51 pageContext.setAttribute("osVersion", SystemUtils.OS_VERSION); 52 pageContext.setAttribute("osArch", SystemUtils.OS_ARCH); 53 pageContext.setAttribute("maxMemory", Runtime.getRuntime().maxMemory()/(1024*1024)); 54 pageContext.setAttribute("usedMemory", (Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory())/(1024*1024)); 55 } 56 57 @ActionMethod(successView = "console/jndi.vhtml") 58 public void doGetJNDI(InvocationContext invocationContext) throws Exception { 59 NamingEnumeration <Binding > enu = getEJBContainer().getNamingContext().listBindings(""); 60 PageContext pageContext = invocationContext.getPageContext(); 61 List <Binding > bindings = new ArrayList <Binding >(); 62 while(enu.hasMoreElements()){ 63 bindings.add(enu.nextElement()); 64 } 65 66 Collections.sort(bindings, new Comparator <Binding >(){ 67 public int compare(Binding o1, Binding o2) { 68 return o1.getName().compareTo(o2.getName()); 69 } 70 }); 71 72 pageContext.setAttribute("bindings", bindings); 73 } 74 75 @ActionMethod(successView = "console/ejb.vhtml") 76 public void doGetContainer(InvocationContext invocationContext) throws Exception { 77 PageContext pageContext = invocationContext.getPageContext(); 78 EJBContainer container = getEJBContainer(); 79 int defaultTransactionTimeout = container.getTransactionTimeout(); 80 List <EJBBucket> buckets = new ArrayList <EJBBucket>(container.listBuckets()); 81 Collections.sort(buckets, new Comparator <EJBBucket>(){ 82 public int compare(EJBBucket o1, EJBBucket o2) { 83 if(o1.getModule().getName().equals(o2.getModule().getName())) { 84 return o1.getEJBName().compareTo(o2.getEJBName()); 85 } 86 else { 87 return o1.getModule().getName().compareTo(o2.getModule().getName()); 88 } 89 } 90 }); 91 pageContext.setAttribute("defaultTransactionTimeout", defaultTransactionTimeout); 92 pageContext.setAttribute("buckets", buckets); 93 } 94 95 @ActionMethod(successView = "console/jpa.vhtml") 96 public void doGetJPA(InvocationContext invocationContext) throws Exception { 97 Collection <EntityManagerFactoryImpl> entityManagerFactories = EntityManagerFactoryBuilderImpl.getEntityManagerFactories(); 100 101 111 112 PageContext pageContext = invocationContext.getPageContext(); 113 pageContext.setAttribute("entityManagerFactories", entityManagerFactories); 114 pageContext.setAttribute("namedSQLTemplates", EntityManagerFactoryBuilderImpl.getNamedSQLTemplates()); 115 117 } 118 119 @ActionMethod(successView = "console/module.vhtml") 120 public void doGetModules(InvocationContext invocationContext) throws Exception { 121 Framework framework = WebContextLoader.getManagedFramework(); 122 Module systemModule = framework.getSystemModule(); 123 List <Module> allModules = framework.getAllModules(); 124 125 List <Module> modules = new ArrayList <Module>(allModules.size()+1); 126 modules.add(systemModule); 127 modules.addAll(allModules); 128 PageContext pageContext = invocationContext.getPageContext(); 129 pageContext.setAttribute("modules", modules); 130 } 131 132 @ActionMethod(successView = "console/testconnectionresult.vhtml", errorView = "console/testconnectionresult.vhtml",invocationClass = TestConnectionInvocation.class) 133 public void doGetTestConnection(InvocationContext invocationContext) throws Exception { 134 TestConnectionInvocation invocation = (TestConnectionInvocation)invocationContext.getInvocation(); 135 String unitName = invocation.getUnitName(); 136 PageContext pageContext = invocationContext.getPageContext(); 137 pageContext.setAttribute("unitName", unitName); 138 EntityManagerFactoryBuilderImpl.getEntityManagerFactoryByName(unitName).checkConnection(); 139 } 140 141 @ActionMethod(successView = "console.jpa.do", targetMethod = ActionMethod.TargetMethod.REDIRECT, invocationClass = TestConnectionInvocation.class) 142 public void doGetClearCacheConfig(InvocationContext invocationContext) throws Exception { 143 TestConnectionInvocation invocation = (TestConnectionInvocation)invocationContext.getInvocation(); 144 String unitName = invocation.getUnitName(); 145 EntityManagerFactoryBuilderImpl.getEntityManagerFactoryByName(unitName).clearCache(); 146 } 147 148 @ActionMethod(successView = "console/jpa.vhtml",invocationClass = TestConnectionInvocation.class) 149 public void doGetClearCache(InvocationContext invocationContext) throws Exception { 150 156 } 157 158 159 private EJBContainer getEJBContainer(){ 160 Framework framework = WebContextLoader.getManagedFramework(); 161 Collection <EJBContainer> containers = framework.getSystemModule().findComponentByInterface(EJBContainer.class); 162 return containers.iterator().next(); 163 } 164 165 private EntityManagerFactoryBuilder getEntityManagerFactoryBuilder(){ 166 Framework framework = WebContextLoader.getManagedFramework(); 167 Collection <EntityManagerFactoryBuilder> entityManagerFactoryBuilders = framework.getSystemModule().findComponentByInterface(EntityManagerFactoryBuilder.class); 168 return entityManagerFactoryBuilders.iterator().next(); 169 } 170 171 public static class TestConnectionInvocation extends Invocation { 172 @StringValidation(nullable = false) 173 private String unitName; 174 175 public String getUnitName() { 176 return unitName; 177 } 178 179 public void setUnitName(String unitName) { 180 this.unitName = unitName; 181 } 182 } 183 184 public static void main(String [] args) { 185 186 } 187 } 188 | Popular Tags |