求助!SSH2框架下,如何在tomcat启动时,如何初始化系统?

时间:2020-11-30 08:29:19
使用SSH2框架,想在tomcat启动后,从数据库中读一些数据存放到Application中?使用自定义监听器的话,不知道怎么往自定义监听器类注入hibernateTemplate。或者有其他方法?

14 个解决方案

#1


按dao包下类的注入方法,报异常javax.naming.NameNotFoundException。

#2


没人来自己顶下。
其实我想异常可能是spring还没初始化完就执行我自定义的监听器了。所以我想等spring初始化完成后在执行我的监听器,不知道名字实现。

#3


tomcat启动时 启动一个servlet去取数据不行吗?

#4


该回复于2012-04-19 13:24:37被版主删除

#5


引用 3 楼  的回复:
tomcat启动时 启动一个servlet去取数据不行吗?

hibernate被spring管理了,难道是自己在写个jdbc连接数据库获得connection,然后连接数据库?不然servlet里怎么连接数据库?而且Struts2能与Servlet同时使用吗?

#6


引用 5 楼  的回复:
引用 3 楼 的回复:
tomcat启动时 启动一个servlet去取数据不行吗?

hibernate被spring管理了,难道是自己在写个jdbc连接数据库获得connection,然后连接数据库?不然servlet里怎么连接数据库?而且Struts2能与Servlet同时使用吗?


你直接调用相应方法就行  他会自动注入连接  struts2和servlet当然可以同时用  

#7



public class GetMessageListener implements ServletContextListener {


public void contextDestroyed(ServletContextEvent event) {
}

public void contextInitialized(ServletContextEvent event) {
}

}

#8


引用 6 楼  的回复:
引用 5 楼 的回复:
引用 3 楼 的回复:
tomcat启动时 启动一个servlet去取数据不行吗?

hibernate被spring管理了,难道是自己在写个jdbc连接数据库获得connection,然后连接数据库?不然servlet里怎么连接数据库?而且Struts2能与Servlet同时使用吗?


你直接调用相应方法就行 他会自动注入连接 struts2和servle……

直接调用方法?hibernateTemplate的方法?都没注入成功怎么调用。下面是测试代码。
@Component("getMessageListener")
public class GetMessageListener implements ServletContextListener{
private HibernateTemplate hibernateTemplate;
public void contextDestroyed(ServletContextEvent sce) {
}
public void contextInitialized(ServletContextEvent sce) {
if (hibernateTemplate == null) {
System.out.println("hibernateTemplate未注入!");
}
}
@Resource
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
}

结果输出:
hibernateTemplate未注入!

#9


引用 7 楼  的回复:
Java code

public class GetMessageListener implements ServletContextListener {

    
    public void contextDestroyed(ServletContextEvent event) {
            }

    public void contextInitial……

使用ServletContextListener监听器加载的类会被spring管理吗?感觉GetMessageListener类没被spring管理,所以hibernateTemplate没有注入进去。contextInitialized()方法运行时,都不知道spring初始化完成没。

#10


照上面的方法实现一个ServletContextListener,并将其配置在web.xml中spring的listener下面。
这样你就可以在自定义的listener中使用spring获取相应的bean来初始化系统。

#11


该回复于2012-04-20 16:36:14被版主删除

#12


引用 10 楼  的回复:
照上面的方法实现一个ServletContextListener,并将其配置在web.xml中spring的listener下面。
这样你就可以在自定义的listener中使用spring获取相应的bean来初始化系统。

如何在自定义的listener中使用spring获取相应的bean?我使用注解和xml文件配置都没有注入成功。
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 自定义监听器-->
<listener>
   <listener-class>com.test.GetMessageListener</listener-class>
   </listener>
结果输出:
hibernateTemplate未注入!

#13


<!-- 为Listener指定spring配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
有没有?
或者你在通过注解方式注入时有没有
<!-- 打开组件自动扫描功能 -->
<context:component-scan base-package="tarena"></context:component-scan>

具体我也不知道,呵呵,希望你早点解决

#14


引用 13 楼  的回复:
<!-- 为Listener指定spring配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
有没有?
或者你在通过注解方式注入时有没有
……

都写了,没成功。

#1


按dao包下类的注入方法,报异常javax.naming.NameNotFoundException。

#2


没人来自己顶下。
其实我想异常可能是spring还没初始化完就执行我自定义的监听器了。所以我想等spring初始化完成后在执行我的监听器,不知道名字实现。

#3


tomcat启动时 启动一个servlet去取数据不行吗?

#4


该回复于2012-04-19 13:24:37被版主删除

#5


引用 3 楼  的回复:
tomcat启动时 启动一个servlet去取数据不行吗?

hibernate被spring管理了,难道是自己在写个jdbc连接数据库获得connection,然后连接数据库?不然servlet里怎么连接数据库?而且Struts2能与Servlet同时使用吗?

#6


引用 5 楼  的回复:
引用 3 楼 的回复:
tomcat启动时 启动一个servlet去取数据不行吗?

hibernate被spring管理了,难道是自己在写个jdbc连接数据库获得connection,然后连接数据库?不然servlet里怎么连接数据库?而且Struts2能与Servlet同时使用吗?


你直接调用相应方法就行  他会自动注入连接  struts2和servlet当然可以同时用  

#7



public class GetMessageListener implements ServletContextListener {


public void contextDestroyed(ServletContextEvent event) {
}

public void contextInitialized(ServletContextEvent event) {
}

}

#8


引用 6 楼  的回复:
引用 5 楼 的回复:
引用 3 楼 的回复:
tomcat启动时 启动一个servlet去取数据不行吗?

hibernate被spring管理了,难道是自己在写个jdbc连接数据库获得connection,然后连接数据库?不然servlet里怎么连接数据库?而且Struts2能与Servlet同时使用吗?


你直接调用相应方法就行 他会自动注入连接 struts2和servle……

直接调用方法?hibernateTemplate的方法?都没注入成功怎么调用。下面是测试代码。
@Component("getMessageListener")
public class GetMessageListener implements ServletContextListener{
private HibernateTemplate hibernateTemplate;
public void contextDestroyed(ServletContextEvent sce) {
}
public void contextInitialized(ServletContextEvent sce) {
if (hibernateTemplate == null) {
System.out.println("hibernateTemplate未注入!");
}
}
@Resource
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
}

结果输出:
hibernateTemplate未注入!

#9


引用 7 楼  的回复:
Java code

public class GetMessageListener implements ServletContextListener {

    
    public void contextDestroyed(ServletContextEvent event) {
            }

    public void contextInitial……

使用ServletContextListener监听器加载的类会被spring管理吗?感觉GetMessageListener类没被spring管理,所以hibernateTemplate没有注入进去。contextInitialized()方法运行时,都不知道spring初始化完成没。

#10


照上面的方法实现一个ServletContextListener,并将其配置在web.xml中spring的listener下面。
这样你就可以在自定义的listener中使用spring获取相应的bean来初始化系统。

#11


该回复于2012-04-20 16:36:14被版主删除

#12


引用 10 楼  的回复:
照上面的方法实现一个ServletContextListener,并将其配置在web.xml中spring的listener下面。
这样你就可以在自定义的listener中使用spring获取相应的bean来初始化系统。

如何在自定义的listener中使用spring获取相应的bean?我使用注解和xml文件配置都没有注入成功。
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 自定义监听器-->
<listener>
   <listener-class>com.test.GetMessageListener</listener-class>
   </listener>
结果输出:
hibernateTemplate未注入!

#13


<!-- 为Listener指定spring配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
有没有?
或者你在通过注解方式注入时有没有
<!-- 打开组件自动扫描功能 -->
<context:component-scan base-package="tarena"></context:component-scan>

具体我也不知道,呵呵,希望你早点解决

#14


引用 13 楼  的回复:
<!-- 为Listener指定spring配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
有没有?
或者你在通过注解方式注入时有没有
……

都写了,没成功。