请问大家spring能够不依赖于容器(如tomcat)运行吗?

我正在做一个JMS消息处理服务,监听JMS消息并进行处理。想利用spring整合的jms模版和定时调度等功能实现,现在正在思考的问题就是:这个JMS消息处理服务本身是可以与tomcat之类的容器无关的,我想做成一个可以启动的服务(比如通过java命令:java startService 启动),请问spring能够不依赖于容器(如tomcat)运行吗?

[b]问题补充:[/b]
如果可以,请问spring的初始化该如何做呢?
[b]问题补充:[/b]
谢谢,我试一下先:)
[b]问题补充:[/b]
我举个例子:有一个JMS监听器,程序一启动JMS监听器就马上启动监听JMS消息

<bean id="listenerContainer"
    class="org.springframework.jms.listener.SimpleMessageListenerContainer102">     
    <property name="concurrentConsumers" value="1" />
    <property name="connectionFactory"
        ref="jmsQueueConnectionFactory" />
    <property name="destination" ref="receiveDestination" />
    <property name="messageListener" ref="resourceMessageListener" />   
    <property name="sessionTransacted" value="true"/>       

</bean>


请问如何作为一个独立的服务启动呢?
[b]问题补充:[/b]
谢谢各位,的确是
new ClassPathXmlApplicationContext("spring.xml");
这样一句就可以完成所有的初始化。
可惜分数只能给一个人,我只能给了正面回答我的第一个人。
很感谢大家的帮助!

spring.xml 要放入 classpath中

of course

ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
MyBean mybean = ctx.getBean("myBean);

大致这样吧
[code="java"]
public class AppCtxUtil {
private static final ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

public static ApplicationContext getAppCtx() {
    return ctx;
}

}
[/code]

配置文件放在classpath下就行了

ApplicationContext ac = new FileSystemXmlApplicationContext("spring.xml");
xxx xx = ac.getBean("y");

如果是在Unix上:
可以写些脚本来让这个程序在后台运行
java xxx.xxx.XXX &
然后关闭的脚本就搜索到这个程序的pid
用kill -15命令来发送SIGTERM信号给程序,让程序处理并中止。

Windows下没搞过,应该有opensource的东西可以解决,粗略google,发现有JavaService这个东西

谁有更好的办法呢,讨论讨论?

ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");

MyBean mybean = ctx.getBean("myBean);

就是这个。

用quartz和spring结合,用java xxx调用不就完了吗

这个问题问的太初级了,spring只需要jdk就可以运行起来。

可以用于非WEB系统``

:)当然可以,用于web和非web都可以,只需要系统配置了jdk就可以

当然可以了。
ApplicationContext 有三种方法可以得到,看看Spring in Action

可以的。。

开发无所谓了。。最后都要打包成统一格式的。。放在那种服务器运行都可以。

Spring 本身如果不使用web特性,是不依赖web容器的

不要自爱这样的问题上伤脑筋,应该多考虑考虑Spring更重要的特性,比如IOC 和 AOP,如果你要深入Spring,这两个你一定要搞定它。

不能,没有服务器,JMS能运行吗?

JMS用ActiveMQ,spring本来就不依赖容器,我原来有个项目和发问的兄弟很相似。JMS服务器用activeMQ,然后程序使用spring,些个启动的class,用上ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml"); 就行了。

本来就可以不依赖tomcat,只是你自己懒得去找资料,懒得里你

容器只是提供远程看的.所以spring当然可以脱离tomcat.
[code="java"]
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Util {
private static ApplicationContext appCtx = null;
private Util(){
appCtx = new ClassPathXmlApplicationContext("appCtx.xml");
}

public static ApplicationContext getAppCtx() {
    return appCtx;
}

public static void main(String args[]){
    BeanClass bean = Util.getAppCtx().getBean("beanClass ");
}

}
[/code]

可以.
ApplicationContext ac = new FileSystemXmlApplicationContext("spring.xml");