2012-07-01 46 views
1

我试图通过Daemon服务来运行Spring作为独立应用的课程。Runnig通过Daemon作为独立弹簧

我配置了run.sh脚本,并将其添加到了所有Spring Jars框架中。

我现在想从后台程序类执行我的出发点类是这样的:

代码: 公共类FeedDaemon实现守护 { 公共FeedDaemon() { }

protected final static Logger log = LoggerFactory.getLogger(FeedDaemon.class); 
protected boolean shouldBeRunning = false; 
protected ProviderFactory runner = null; 

@Override 
public void destroy() 
{ 
    runner = null; 
} 

@Override 
public void init(DaemonContext arg0) throws Exception 
{ 
    runner = new ProviderFactory(); 
} 

public void start() throws RuntimeError, ConfigError 
{ 
    log.info("Starting daemon"); 
    runner.start(); 
} 

public void stop() throws Exception 
{ 
    log.info("Starting Shutting daemon ..."); 
    runner.stop(); 
} 

}

代码:

package com.spring.test; 

import org.apache.log4j.Logger; 
import org.apache.log4j.PropertyConfigurator; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 

import com.spring.aspect.Spring3HelloWorld; 
import com.spring.beans.ParkingCar.CarBean; 
import com.spring.beans.ParkingCar.CarMaker; 
import com.spring.beans.ParkingCar.FourWheelsVechile; 
import com.spring.beans.ParkingCar.TwoWheelsVechile; 
import com.spring.beans.ParkingCar.Vechile; 
import com.spring.beans.ParkingCar.VechileDetails; 
import com.spring.beans.calculator.CalculateNumbersHolderBean; 
import com.spring.beans.calculator.CalculateStrategyBean; 
import com.spring.beans.calculator.CalculatorBean; 

public class Spring3HelloWorldTest 
{ 

    static Logger logger = Logger.getLogger(Spring3HelloWorldTest.class); 

    public static void execute() 
    { 
     try 
     { 
      ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 
      logger.debug("3"); 


      Vechile fourWheelsVechile = (FourWheelsVechile) context.getBean("Ambulance"); 
      fourWheelsVechile.drive(); 
      CarMaker carMaker = (CarMaker) context.getBean("carMaker"); 
      CarBean carBean = carMaker.createNewCar(); 
      carBean.driveCar(); 
     } 
     catch (Throwable e) 
     { 
      logger.error(e); 
     } 

    } 
} 

而且我得到这个错误:

java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.commons.daemon.support.DaemonLoader.load(DaemonLoader.java:164) 
Caused by: java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext 
    at com.spring.runner.FeedDaemon.init(FeedDaemon.java:37) 
    ... 5 more 
Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) 
    ... 6 more 
Cannot load daemon 
Service exit with a return value of 3 

这就是我run.sh脚本:

出口JAVA_HOME =/../ FIXGW =/../FIXGW CLASSPATH = $ FIXGW/LIB/FeedHandler.jar:$ FIXGW/lib目录/ FixSpring.jar:$ FIXGW/lib目录/ org.springframework.web来源-3.1.1.RELEASE.jar:$ FIXGW/lib目录/ org.springframework.web.struts来源-3.1.1.RELEASE.jar:$ FIXGW/lib目录/ org.springframework.web.servlet来源-3.1.1.RELEASE.jar:$ FIXGW/lib目录/ org.springframework.web.portlet来源-3.1.1 .RELEASE.jar:$ FIXGW/lib目录/ org.springframework.test来源-3.1.1.RELEASE.jar:$ F IXGW/lib目录/ org.springframework.orm来源-3.1.1.RELEASE.jar:$ FIXGW/lib目录/ org.springframework.jms来源-3.1.1.RELEASE.jar:$ FIXGW/lib目录/ org.springframework。 JDBC-来源-3.1.1.RELEASE.jar:$ FIXGW/lib目录/ org.springframework.context.support来源-3.1.1.RELEASE.jar:$ FIXGW/lib目录/ org.springframework.aspects来源-3.1。 1.RELEASE.jar:$ FIXGW/lib目录/ org.springframework.transaction来源-3.1.1.RELEASE.jar:$ FIXGW/lib目录/ org.springframework.oxm来源-3.1.1.RELEASE.jar:$ FIXGW /lib/org.springframework.instrument-sources-3.1.1.RELEASE.jar:$FIXGW/lib/org.springframework.instrument.tomcat-sources-3.1.1.RELEASE.jar:$FIXGW/lib/org.springframework .expression来源-3.1.1.RELEASE.jar:$ FIXGW/lib目录/ org.springframework.core来源-3.1.1.RELEASE.jar:$ FIXGW/lib目录/ org.springframework.context来源-3.1.1 .RELEASE.jar:$ FIXGW/lib目录/ org.springframework.beans来源-3.1.1.RELEASE.jar:$ FIXGW/lib目录/ org.springframework.asm来源-3.1.1.RELEASE.jar:FIXGW $/LIB/org.springframework.aop来源-3.1.1.RELEASE.jar:$ FIXGW/lib目录/公地守护-1 .0.3.jar

CD $ FIXGW /../jsvc -user狐狸\ -XX:+ DisableExplicitGC -XX:+ UseConcMarkSweepGC -XX:SurvivorRatio = 16 \ -Dlog4j.configuration =文件:$ FIXGW /的conf/log4j.properties \ -OUTFILE的/ dev/null的\ -errfile $ FIXGW /日志/ error.log中\ -verbose -classpath $ CLASSPATH \ com.spring.runner.FeedDaemon

任何想法?

谢谢, 射线。

回答

0

弹簧罐不在classpath中。请检查我的answer。通过命令行(你的shell脚本中的ofcourse)在classpath中添加所有库。

我现在看到你的问题了。你在classpath中有源文件。这些被提及为org.springframework.web.servlet-sources-3.1.1.RELEASE.jar而编译的罐子被提及为org.springframework.web.servlet-3.1.1.RELEASE.jar

+0

但罐子在classpath ..检查我run.sh脚本 – rayman

+0

你从春天source.org –

+0

@rayman下载完整的zip文件:更新的答案 –

1

您似乎已经添加了所有包含Spring java源代码(未编译代码)的jar。您应该将未命名为...- sources ...的jar添加到类路径中。

+0

我应该重新命名还是应该重新下载正确的罐子? – rayman

+0

它应该如何完全命名?请给我写一个jar例子。谢谢 – rayman

+0

如果你使用Maven,你想要的文件应该紧挨着源文件。如果没有,则需要名为spring-core-3.1.1.RELEASE.jar等的文件。 –