GVKun编程网logo

有没有一种方法只能在Tomcat / Wildfly / Glassfish启动时运行方法/类?

30

对于想了解有没有一种方法只能在Tomcat/Wildfly/Glassfish启动时运行方法/类?的读者,本文将提供新的信息,并且为您提供关于5种方法访问GlassFish资源、glassfishv3

对于想了解有没有一种方法只能在Tomcat / Wildfly / Glassfish启动时运行方法/类?的读者,本文将提供新的信息,并且为您提供关于5种方法访问GlassFish资源、glassfish v3与tomcat 7、GlassFish 和 WildFly 提供了对 Java EE 7 的全部实现,那开发所需要的 jar 包在哪里?、Glassfish与Tomcat的RESTful服务的有价值信息。

本文目录一览:

有没有一种方法只能在Tomcat / Wildfly / Glassfish启动时运行方法/类?

有没有一种方法只能在Tomcat / Wildfly / Glassfish启动时运行方法/类?

我需要在Tomcat启动时删除临时文件,其中包含临时文件的文件夹的传递位于applicationContext.xml中。

有没有一种方法只能在Tomcat启动时运行方法/类?

答案1

小编典典

您可以编写一个ServletContextListenercontextInitialized()方法调用您的方法的。您将侦听器附加到web.xml中的webapp,例如

<listener>   <listener-class>my.Listener</listener-class></listener>

package my;public class Listener implements javax.servlet.ServletContextListener {   public void contextInitialized(ServletContext context) {      MyOtherClass.callMe();   }}

严格来说,这仅在webapp启动时运行一次,而不是在Tomcat启动时运行,但这可能是同一件事。

5种方法访问GlassFish资源

5种方法访问GlassFish资源

方法1,通过管理控制台


 
  首先,先通过管理控制台来创建一个连接池mypool。在浏览器的输入管理控制台地址:localhost:4848。采用缺省的用户名“admin”及其密码“adminadmin”登录。成功登录后,在左边的树型菜单中,展开“资源”-“JDBC”-“连接池”。
在主面板中,点击“新建”。在面板“新建 JDBC 连接池(步骤 1,共 2 步)”中,输入“名称”为mypool,“资源类型”选为“javax.sql.DataSource”,“数据库供应商”选为“JavaDB”。在接下来的“新建 JDBC 连接池(步骤 2,共 2 步)”中,可以看到数据库连接池的各项缺省设置。将在“池设置”一栏中的“空闲超时”值由缺省的300改为777。 点击“完成”。至此,我们通过管理控制台完成了对数据库连接池mypook的创建,并修改了其空闲超时的值。

 
  方法2,通过命令行工具asadmin

接下来,我们通过命令行的asadmin来查看这一资源。
asadmin list server.resource*
运行结果如下:

 

undefined
undefined
  server.resource
  -
  ref
  .jdbc
  /
  __CallFlowPool server.resource
  -
  ref
  .jdbc
  /
  __TimerPool server.resource
  -
  ref
  .jdbc
  /
  __default server.resources server.resources.jdbc
  -
  connection
  -
  pool.DerbyPool server.resources.jdbc
  -
  connection
  -
  pool.__CallFlowPool server.resources.jdbc
  -
  connection
  -
  pool.__TimerPool server.resources.jdbc
  -
  connection
  -
  pool.mypool server.resources.jdbc
  -
  resource.jdbc
  /
  __CallFlowPool server.resources.jdbc
  -
  resource.jdbc
  /
  __TimerPool server.resources.jdbc
  -
  resource.jdbc
  /
  __default

这里列出的MBean是用GlassFish自己的DottedName来标识的。接着通过asadmin的子命令get来查看对象mypool的属性:
asadmin get server.resources.jdbc-connection-pool.mypool.*
或者进一步查看空闲超时(idle-timeout-in-seconds)的属性值。
asadmin get server.resources.jdbc-connection-pool.mypool.idle-timeout-in-seconds


结果如下:
server.resources.jdbc-connection-pool.mypool.idle-timeout-in-seconds = 777
至此,我们完成了使用命令行的管理工具asadmin对mypool的访问。这里asadmin通过GlassFish扩展的Dotted Name命名方式来访问MBean的。Dotted Name是GlassFish命令行工具asadmin定义的一套约定。在这套约定的支持下,asadmin的三个子命令(list、set和get )可以通过一个由“.”分隔的字串寻址到GlassFish中的MBean。


方法3,通过第三方工具JConsole


接下来,我们要通过JConsole来访问对象mypool。
在JConsole的登录面板中,选择远处进程:localhost:8686(8686是GlassFish缺省的管理端口),用户名同样为admin,密码adminadmin。登录进来后所看到的是关于GlassFish应用服务器运行时的信息,点击“MBean”。展开树型结构“com.sun.aperv” - “jdbc-connection-pool” - “my pool” - “config” - “属性”。
可以

看到我们所关心的连接池mypool的信息。属性idle-timeout-in-seconds的值为777。修改777为888。
在回到管理控制台或命令行工具asadmin同样可以看到刚才在JConsole所作的修改已经生效。
以上说明三种工具对GlassFish资源的修改是等效的。

接下来通过编程的方式来访问数据库连接池mypool。


方法4,通过标准的JMX编程方式


标准的JMX方式的代码如下:(以下为演示代码。为突出重点,未作异常处理。)


 

undefined
undefined
  import javax.management.
  *
  ; import javax.management.remote.
  *
  ;
  public
  
  class
   JMX_demo {
  public
   JMX_demo() throws Exception {
  //
  创建JMX 的URL
  
  JMXServiceURL url
  =
  
  new
   JMXServiceURL(
  "
  service:jmx:rmi:///jndi/rmi://localhost:8686/jmxrmi
  "
  ); java.util.Map env
  =
  
  new
   java.util.Hashtable();
  //
  缺省用户名和其口令
  
  String[] creds
  =
   {
  "
  admin
  "
  ,
  "
  adminadmin
  "
  }; env.put(JMXConnector.CREDENTIALS,creds);
  //
  建立连接
  
  JMXConnector connector
  =
   JMXConnectorFactory.connect(url,env); MBeanServerConnection mbsc
  =
   connector.getMBeanServerConnection();
  //
  要访问的MBean的Object Name
  
  ObjectName mbeanName
  =
  
  new
   ObjectName(
  "
  com.sun.appserv:type=jdbc-connection-pool,name=mypool,category=config
  "
  );
  //
  所要访问的属性idle-timeout-in-seconds
  
  System.
  out
  .println(
  "
  Using JMX, jdbc pool idle timeout:
  "
  +
   mbsc.getAttribute(mbeanName,
  "
  idle-timeout-in-seconds
  "
  )); }
  public
  
  static
  
  void
   main( final String[] args ) throws Exception{
  new
   JMX_demo(); } }
运行结果如下: Using JMX, jdbc pool idle timeout:888


 

undefined
undefined
  public
  
  class
   AMX_demo {
  public
   AMX_demo() throws Exception {
  //
  Domain Admin Server的机器名或IP地址
  
  final String host
  =
  
  "
  localhost
  "
  ;
  //
  JMX管理端口,缺省8686。
  
  final
  int
   port
  =
  8686
  ;
  //
  管理员名
  
  final String user
  =
  
  "
  admin
  "
  ;
  //
   管理员密码
  
  final String password
  =
  
  "
  adminadmin
  "
  ; TLSParams tlsParams
  =
  null
  ;
  //
  连接到JMX server
  
  AppserverConnectionSource conn
  =
  
  new
   AppserverConnectionSource( AppserverConnectionSource.PROTOCOL_RMI, host, port, user, password, tlsParams,
  null
  ); conn.getJMXConnector(
  true
   );
  //
  DomainRoot和JDBCConnectionPoolConfig就是所说的DCP组件 DomainRoot mDomainRoot = conn.getDomainRoot();
  //
  获取JDBCConnectionPool的列表
  
  Map pools
  =
   mDomainRoot.getDomainConfig().getJDBCConnectionPoolConfigMap(); JDBCConnectionPoolConfig mypool
  =
   (JDBCConnectionPoolConfig)pools.
  get
  (
  "
  mypool
  "
  ); System.
  out
  .println(
  "
  Using DCP, jdbc pool idle timeout:
  "
  +
  mypool.getIdleTimeoutInSeconds()); }
  public
  
  static
  
  void
   main( final String[] args ) throws Exception{
  new
   AMX_demo(); } }方法5,通过AMX编程方式

AMX方式的代码如下:


 

undefined
undefined
  import com.sun.appserv.management.DomainRoot; import com.sun.appserv.management.client.AppserverConnectionSource; import com.sun.appserv.management.client.TLSParams; import com.sun.appserv.management.util.misc.ExceptionUtil; import com.sun.appserv.management.config.
  *
  ; import java.ConnectException; import java.util.Map;

glassfish v3与tomcat 7

glassfish v3与tomcat 7

您推荐哪一种用于网络?为什么?

答案1

小编典典

我不推荐任何特别的东西。如果只需要JSP / Servlet支持,那么两个就足够了。如果你想更重要的是(例如 任何 由提供的JavaEE的API是 比单独使用JSP /Servlet的),则在Tomcat根本就不够,而无需手动加入一些成分对最重要的是遵守了完整的Java EE像JBossAS这样的API 。

用(Eclipse)开发术语来说,Tomcat是快速启动和重新启动器,大约需要3秒钟。Glassfish是一个缓慢的启动器,一个简单的Web应用程序需要5到10秒,但它是一个非常快速的hotdeployer(通过此Glassfish
Eclipse插件)。一切都在一秒钟之内发生,而Tomcat通常需要3秒钟(是的,然后Tomcat基本上会自行重启)。

GlassFish 和 WildFly 提供了对 Java EE 7 的全部实现,那开发所需要的 jar 包在哪里?

GlassFish 和 WildFly 提供了对 Java EE 7 的全部实现,那开发所需要的 jar 包在哪里?

GlassFish 和 WildFly 都是对 Java EE 7 的完整实现,那么从这两个项目中我应该获取到的一个是运行环境,也就是容器;另外应该还有一个就是提供开发用到的 jar 包了。

我从这两个网站上分别下载下拉的内容里面,发现都是只有运行环境,而没有提供开发用的 jar 包,这个是怎么回事?是我理解的有问题么?

用于开发的 jar 包我到哪里去找呢?

Glassfish与Tomcat的RESTful服务

Glassfish与Tomcat的RESTful服务

我有.net开发背景,但是对Java世界来说还比较陌生。我们已经开始使用JAX-RS开发RESTful服务(公共Web
API),这些服务主要由移动平台(Android,iPhone,Windows Phone等)使用。

  1. 在选择合适的服务器(例如Tomcat或Glassfish等)时,我们需要一些指导吗?请也分享原因。
  2. 还请指导我们的JAX-RS决策是否适合构建RESTful服务。

今天关于有没有一种方法只能在Tomcat / Wildfly / Glassfish启动时运行方法/类?的分享就到这里,希望大家有所收获,若想了解更多关于5种方法访问GlassFish资源、glassfish v3与tomcat 7、GlassFish 和 WildFly 提供了对 Java EE 7 的全部实现,那开发所需要的 jar 包在哪里?、Glassfish与Tomcat的RESTful服务等相关知识,可以在本站进行查询。

本文标签: