问题描述
我正在做一个JMS消息处理服务,监听JMS消息并进行处理。想利用spring整合的jms模版和定时调度等功能实现,现在正在思考的问题就是:这个JMS消息处理服务本身是可以与tomcat之类的容器无关的,我想做成一个可以启动的服务(比如通过java命令:java startService 启动),请问spring能够不依赖于容器(如tomcat)运行吗?问题补充:如果可以,请问spring的初始化该如何做呢?问题补充:谢谢,我试一下先:)问题补充:我举个例子:有一个JMS监听器,程序一启动JMS监听器就马上启动监听JMS消息<code><!-- this is the attendant message listener container --><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></code>请问如何作为一个独立的服务启动呢?问题补充:谢谢各位,的确是new ClassPathXmlApplicationContext("spring.xml"); 这样一句就可以完成所有的初始化。可惜分数只能给一个人,我只能给了正面回答我的第一个人。很感谢大家的帮助!
解决方案
spring.xml 要放入 classpath中
解决方案二:
可以.ApplicationContext ac = new FileSystemXmlApplicationContext("spring.xml");
解决方案三:
容器只是提供远程看的.所以spring当然可以脱离tomcat.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 ");}}
解决方案四:
本来就可以不依赖tomcat,只是你自己懒得去找资料,懒得里你
解决方案五:
JMS用ActiveMQ,spring本来就不依赖容器,我原来有个项目和发问的兄弟很相似。JMS服务器用activeMQ,然后程序使用spring,些个启动的class,用上ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml"); 就行了。
解决方案六:
不能,没有服务器,JMS能运行吗?
解决方案七:
不要自爱这样的问题上伤脑筋,应该多考虑考虑Spring更重要的特性,比如IOC 和 AOP,如果你要深入Spring,这两个你一定要搞定它。
解决方案八:
Spring 本身如果不使用web特性,是不依赖web容器的
解决方案九:
开发无所谓了。。最后都要打包成统一格式的。。放在那种服务器运行都可以。
解决方案十:
可以的。。
解决方案十一:
当然可以了。ApplicationContext 有三种方法可以得到,看看Spring in Action
解决方案十二:
当然可以,用于web和非web都可以,只需要系统配置了jdk就可以
解决方案十三:
可以用于非WEB系统``
解决方案十四:
这个问题问的太初级了,spring只需要jdk就可以运行起来。
解决方案十五:
用quartz和spring结合,用java xxx调用不就完了吗
解决方案:
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml"); MyBean mybean = ctx.getBean("myBean);------------------------------------就是这个。
解决方案:
如果是在Unix上:可以写些脚本来让这个程序在后台运行java xxx.xxx.XXX &然后关闭的脚本就搜索到这个程序的pid用kill -15命令来发送SIGTERM信号给程序,让程序处理并中止。Windows下没搞过,应该有opensource的东西可以解决,粗略google,发现有JavaService这个东西谁有更好的办法呢,讨论讨论?
解决方案:
ApplicationContext ac = new FileSystemXmlApplicationContext("spring.xml");xxx xx = ac.getBean("y");
解决方案:
大致这样吧public class AppCtxUtil {private static final ApplicationContextctx= new ClassPathXmlApplicationContext("applicationContext.xml");public static ApplicationContext getAppCtx() {return ctx;}}配置文件放在classpath下就行了
解决方案:
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");MyBean mybean = ctx.getBean("myBean);
解决方案:
of course