2013-12-12 5 views
0

Tomcat 7과 Java 7을 사용하여 Windows 시스템에서 로컬로이 응용 프로그램을 빌드하고 실행할 수 있습니다.왜 Spring의 getLocalHost가 내 서버에서 예외를 throw합니까?

그러나 Tomcat 7과 Java 7을 사용하는 Linux 시스템에 war 파일을 배포하면 예외가 발생합니다. 문제는 SPEL 함수에는 getLocalHost 것 같다()

이 내 JMS-의 context.xml 파일에서 코드 조각입니다 :

<jms:listener-container 
     connection-factory="AQjmsFactory" 
     container-type="default" 
     destination-type="durableTopic" 
     client-id="THERMO-PERSON-FILTER" 
     acknowledge="transacted" 
     concurrency="8-16"> 
    <jms:listener destination="TRAIN_INFO_QUEUE" ref="personEventGateway" subscription='THERMOEVENT#{ T(java.net.InetAddress).getLocalHost().getHostName().replaceAll(".mycompany.com","").replaceAll("\.","").replaceAll("-","") }'/> 
</jms:listener-container> 

그리고 전쟁 파일을 배포 할 때, 오류가 다음과 같습니다 :

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
[2013-12-11 16:22:43,499] INFO org.springframework.beans.factory.support.DefaultListableBeanFactory - Destroying singletons in org.s[email protected]1bb334a: defining beans [THERMOSerializer,erpuserService,erpuserDao,txManager,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,org.springframework.context.support.PropertySourcesPlaceholderConfigurer#0,log4jInitialization,personJmsTemplate,erpJmsTemplate,personEventGateway,erpEventGateway,personFilterObj,erpBusObj,AQjmsFactory,org.springframework.jms.listener.DefaultMessageListenerContainer#0,org.springframework.jms.listener.DefaultMessageListenerContainer#1,jmsFactoryDelegate,jmsFactory,THERMOInfoQueue,THERMOUpdatesQueue,aqDataSource,bizDataSource]; root of factory hierarchy 
[2013-12-11 16:22:43,500] ERROR org.springframework.web.context.ContextLoader - Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.jms.listener.DefaultMessageListenerContainer#0': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.ExpressionInvocationTargetException: A problem occurred when trying to execute method 'getLocalHost' on object of type 'java.lang.Class' 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:529) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:983) 
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:548) 
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1468) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301) 
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(Unknown Source) 
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(Unknown Source) 
    at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1447) 
    at org.apache.catalina.manager.HTMLManagerServlet.upload(HTMLManagerServlet.java:303) 
    at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:210) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:213) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:611) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.ExpressionInvocationTargetException: A problem occurred when trying to execute method 'getLocalHost' on object of type 'java.lang.Class' 
    at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:142) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.evaluateBeanDefinitionString(AbstractBeanFactory.java:1312) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.evaluate(BeanDefinitionValueResolver.java:225) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:201) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1387) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1128) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    ... 57 more 
Caused by: org.springframework.expression.ExpressionInvocationTargetException: A problem occurred when trying to execute method 'getLocalHost' on object of type 'java.lang.Class' 
    at org.springframework.expression.spel.ast.MethodReference.throwSimpleExceptionIfPossible(MethodReference.java:162) 
    at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:145) 
    at org.springframework.expression.spel.ast.CompoundExpression.getValueRef(CompoundExpression.java:55) 
    at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:82) 
    at org.springframework.expression.spel.ast.SpelNodeImpl.getTypedValue(SpelNodeImpl.java:102) 
    at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:98) 
    at org.springframework.expression.common.CompositeStringExpression.getValue(CompositeStringExpression.java:82) 
    at org.springframework.expression.common.CompositeStringExpression.getValue(CompositeStringExpression.java:39) 
    at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:139) 
    ... 63 more 
Caused by: java.net.UnknownHostException: TRAIN-test1: TRAIN-test1: Name or service not known 
    at java.net.InetAddress.getLocalHost(Unknown Source) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.springframework.expression.spel.support.ReflectiveMethodExecutor.execute(ReflectiveMethodExecutor.java:69) 
    at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:140) 
    ... 70 more 
Caused by: java.net.UnknownHostException: TRAIN-test1: Name or service not known 
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) 
    at java.net.InetAddress$1.lookupAllHostAddr(Unknown Source) 
    at java.net.InetAddress.getAddressesFromNameService(Unknown Source) 
    ... 77 more 
Dec 11, 2013 4:22:43 PM org.apache.catalina.core.StandardContext startInternal 
SEVERE: Error listenerStart 
Dec 11, 2013 4:22:43 PM org.apache.catalina.core.StandardContext startInternal 
SEVERE: Context [/THERMO-event-processor] startup failed due to previous errors 
Dec 11, 2013 4:22:43 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc 
SEVERE: The web application [/THERMO-event-processor] registered the JDBC driver [oracle.jdbc.driver.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. 
log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
+0

어디에서나 호스트로 'TRAIN-test1'을 지정 했습니까? –

답변

2

문제는 ... 예외의 근본 원인이되는

Caused by: java.net.UnknownHostException: TRAIN-test1

이것은 리눅스 박스의 네트워크 설정에 문제가 있음을 의미합니다. /etc/hosts 파일, /etc/resolv.conf 등의 문제 등 많은 것들이있을 수 있습니다.

+0

Gary에게 답장을 보내 주셔서 감사합니다. Linux 서버의 호스트 이름이 TRAIN-test1 (호스트 이름을 실행하여)이라고 확신합니다. 하지만 나는 네가 옳다고 생각한다. > ping TRAIN-test1을 시도하면 "알 수없는 호스트"가 표시됩니다. 정규화 된 도메인 TRAIN-test1.mycompany.com을 사용하면 작동합니다. –

관련 문제