我正在做一个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");
就是这个。
用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");