2017-09-16 1 views
-2

Java 동적 웹 프로젝트에서 Spring을 사용했지만 Windows에서 제대로 작동하지만 컨트롤러를 작동하지 않으면 Ubuntu VM에 배포 한 후에도 만들었습니다. war 파일을 Eclipse Windows에 설치하고 Tomcat 관리자를 통해 배포했지만 작동하지 않았습니다.Windows에서 Linux로 응용 프로그램을 배포 한 후 컨트롤러가 작동하지 않습니다.

그런 다음 webapps 폴더에 동일한 구조의 src 코드를 복사했지만 .jsp 페이지 만 표시하고 페이지를 @requestMapping에 매핑하지 않고 컨트롤러 클래스를 호출합니다. 설정/리눅스에서 작동하도록 구성? 응용 프로그램을 연 후

이 index.jsp가이 내용을 보여줍니다 만, 제출을 클릭 한 후이 <form class="formcolor" action="tiers" method="GET"> 통해 AppDynamicsMain.java 컨트롤러를 호출하도록되어 있지만 대신 표시 할 계층 페이지를 찾고 및 HTTP 상태 404를 발생 - 찾을 수 없습니다

error page I get

나는 $ CATALINA_HOME/webapps에/appd-CP /의 WebContent에서 필요한 모든 jar 파일// lib에 WEB-INF/나는 $ CATALINA_HOME/lib 디렉토리로 이동해야하나요 한 /?

귀하의 도움에 크게 감사드립니다.

PS : 내 VM, 아니 GUI가 없습니다 그것은 내가로 전화를 걸 내 프로젝트의 루트에 추가 index.jsp를했습니다

단자를 통해 (는 IP 사용 mobaXterm에 SSH)에만 액세스 할 수 프로젝트 JSP 폴더에 index.jsp를 :/index.jsp를 $ CATALINA_HOME/webapps에/appd-CP :

<html> 
     <head> 

      <META http-equiv="refresh" content="0;URL=welcome.jsp"> 

     </head> 

     <body> 
     </body> 
</html> 
:의 WebContent/WEB-INF/JSP/index.jsp에서의

<html> 
     <head> 

      <META http-equiv="refresh" content="0;URL=WebContent/WEB-INF/jsp/index.jsp"> 

     </head> 

     <body> 
     </body> 
</html> 

index.jsp를

여기는 VM의 프로젝트 구조입니다. :

appd-cp 
    |->index.jsp 
    |->src 
    | -->com.sh 
    |  --->AppDynamicsMain.java  
    |->WebContent 
    | -->WEB-INF 
    |  --->jsp 
    |   ---->index.jsp 
    |   ---->rawDataCPU.jsp 
    |   ---->graphCPU.jsp 
    |  --->CapacityPlanning-servlet.xml 
    |  --->web.xml 

위해 welcome.jsp :

<html> 
      <head> 
       <title>my title</title> 
      </head> 
      <style type="text/css"> 
         <%@include file="site.css" %> 
      </style> 
      <body> 
      <div id="flip-tabs" > 
       <ul id="flip-navigation" > 
        <li><a href="welcome.jsp" id="tab-0">Graph</a></li> &nbsp 
        <li class="selected"><a href="welcomeRawData.jsp" id="tab-1" >Raw Data</a></li> &nbsp 
        <li><a href="#" id="tab-2" >Subscribe</a></li> &nbsp 
       </ul> 
      </div>  
     <script> 
     function openNav() { 
      document.getElementById("mySidenav").style.width = "250px"; 
      document.getElementById("main").style.marginLeft = "250px"; 

     } 

     function closeNav() { 
      document.getElementById("mySidenav").style.width = "0"; 
      document.getElementById("main").style.marginLeft = "0"; 

     } 
     </script> 
      <BR><BR><div style="margin-left: 70px;"><p>select the application, parameter and the duration:</p></div> 
      <form class="formcolor" action="tiers" method="GET"> 
      <label>Application: </label> 
           <select name="application"> 
            <option name="application" value="ALEXA_SKILL">ALEXA_SKILL</option> 
            <option name="application" value="AMP">AMP</option> 
           </select> 
          <BR> 
          <BR> 
          <label>Parameter: </label> 
          <select name="param"> 
           <option name="param" value="CPU">CPU usage</option> 
          </select> 
          <BR> 
          <BR> 
          <label>Duration: </label> 
          <select name="duration"> 
           <option name="duration" value="5">5 min</option> 
           <option name="duration" value="15">15 min</option> 
           <option name="duration" value="30">30 min</option> 
          </select> 
          <BR> 
          <BR> 
          <BR> 
          <progress id="p1" max="100" value="0"><span>0</span>%</progress> 
           <input type="submit" value="Submit"></input> 
      <form> 
      </body> 
     </html> 

AppDynamicsMain.java :

package com.sh; 

import java.io.File; 
import java.io.IOException; 

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 
import org.apache.log4j.Logger; 
import org.apache.tomcat.util.http.fileupload.FileUtils; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.ModelMap; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.RequestParam; 
import com.sh.PropertyFileReader; 

@Controller 
public class AppDynamicsMain { 
     protected static final String USERNAME = PropertyFileReader.getAppdUsername(); 
     protected static final String PASSWORD = PropertyFileReader.getAppdPassword(); 
     String DestPath = "/root/AppDynamics/"; 
     public String fileName; 
     public String application; 
     static Log log = LogFactory.getLog(AppDynamicsMain.class.getName()); 
     private Logger logger = Logger.getLogger(AppDynamicsMain.class); 
     static String downloadDestPath = "/root/AppDynamics/download/"; 

     @RequestMapping(value = "tiers" , method = RequestMethod.GET) 
    public String getContent(@RequestParam(required = true) String application , @RequestParam(required = true) String param, @RequestParam(required = true) String duration, ModelMap model) throws IOException{ 

       logger.info("################### going to call rawData"+ param+ " . . . "); 
       File checkFolder = new File(downloadDestPath); 
        if(checkFolder.isDirectory()){ 
          if(checkFolder.list().length>0){ 
            FileUtils.cleanDirectory(checkFolder); 
          } 
         } 
       model.addAttribute(application , application); 
       model.addAttribute(duration , duration); 

       return "forward:/rawData"+param; 
     } 
@RequestMapping(value = "graphs" , method = RequestMethod.GET) 
    public String getGraphContent(@RequestParam(required = true) String application , @RequestParam(required = true) String param , ModelMap model){ 

       logger.info("################### going to call get"+ param+ " . . . "); 
       model.addAttribute(application , application); 

       return "forward:/graph"+param; 
     } 

    } 

의 web.xml :

<web-app id = "WebApp_ID" version = "2.4" 
    xmlns = "http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

    <display-name>Capacity Forecasting - Planning</display-name> 
    <servlet> 
     <servlet-name>CapacityPlanning</servlet-name> 
     <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet 
     </servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>CapacityPlanning</servlet-name> 
     <url-pattern>*</url-pattern> 
    </servlet-mapping> 
     <context-param> 
       <param-name>MONGODB_HOST</param-name> 
       <param-value>localhost</param-value> 
     </context-param> 
     <context-param> 
       <param-name>MONGODB_PORT</param-name> 
       <param-value>27017</param-value> 
     </context-param> 

CapacityPlanning-servlet.xml :

<?xml version = "1.0" encoding = "UTF-8"?> 
    <beans xmlns = "http://www.springframework.org/schema/beans" 
     xmlns:context = "http://www.springframework.org/schema/context" 
     xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:mvc="http://www.springframework.org/schema/mvc" 
     xsi:schemaLocation = "http://www.springframework.org/schema/mvc 
                http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd 
               http://www.springframework.org/schema/beans 
                http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
                http://www.springframework.org/schema/context 
                http://www.springframework.org/schema/context/spring-context-3.0.xsd 
                http://www.springframework.org/schema/data/mongo 
              http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd"> 

     <context:component-scan base-package = "com.sh" /> 

     <bean id = "viewResolver" 
      class = "org.springframework.web.servlet.view.InternalResourceViewResolver"> 
      <property name = "prefix" value = "/WEB-INF/jsp/" /> 
      <property name = "suffix" value = ".jsp" /> 
     </bean> 
    <mvc:annotation-driven/> 
</beans> 
+0

로그에 오류가 있습니까? 귀하의 신청서에 문제가 있습니다. 외부에서 WEB-INF 하의 파일에 액세스 할 수 없습니다. 예 : 'URL = WebContent/WEB-INF/jsp/index.jsp'는 작동하지 않습니다. 앱이 성공적으로 배포되었는지 알 수 있습니까? 당신은 .war을 패키징하고 Apache/Tomcat에 배포 할 수 있어야합니까? –

+0

@MinhKieu, welcome.jsp 페이지에 액세스 할 수 있습니다. URL = WebContent/WEB-INF/jsp/index.jsp가 프로젝트의 루트 디렉토리 아래 index.jsp에서 호출되고 있으며 URL에 액세스하는 데는 아무런 문제가 없습니다. – gr8code2be

+0

루트 폴더에서 파일에 액세스 할 수 있는지 확인할 수 있습니까? 제가 말씀 드렸듯이 WEB-INF 디렉토리 아래의 컨텐츠는 외부 세계로부터 직접 액세스 할 수 없습니다. 이것은 서블릿 컨테이너에 의해 보호됩니다. 이 디렉토리가 수동으로 만든 디렉토리라면 파일 사용 권한을 확인하는 것이 좋습니다. –

답변

0

문제는 중복 된 jar 파일을 사용하고 있습니다./이 봄 jar 파일을 WEB-INF에 있었다/lib 디렉토리 :

  • spring-web-3.0.1.RELEASE.jar
  • org.springframework.asm-3.1.0.RELEASE.jar
  • org.springframework.beans-3.1.0.RELEASE.jar
  • org.springframework.context-3.1.0.RELEASE.jar
  • org.springframework.core-3.1.0.RELEASE.jar
  • org.springframework.expression-3.1.0.release.jar
  • org.springframework.web-3.1.0.RELEASE.jar
  • ,
  • org.springframework.web.servlet-3.1.0.RELEASE.jar.

및 오류의 근본 원인은 java.lang.NoSuchMethodError: org.springframework.web.bind.annotation.RequestMapping.consumes(), org.springframework.web.bind.annotation.RequestMapping.class 초기화가 실패하는 원인 spring-web-3.0.1.RELEASE.jarorg.springframework.web.servlet-3.1.0.RELEASE.jar 모두의 클래스입니다했다. spring-web-3.0.1.RELEASE.jar을 삭제하면 문제가 해결되고 앱이 잘 초기화됩니다.

INFO 2017-09-20 21:50:00,252 [localhost-startStop-2] org.springframework.beans.factory.support.DefaultListableBeanFactory - Pre-instantiating singletons in org.s[email protected]3917dc5c: defining beans [welcomeController,appTiersHeapMemoryUsed,webController,downloadController,modelController,appTiersMemoryUsage,appDynamicsMain,appTiersCPU,appTiersCurrentHeapMemoryUsage,appTiersTotalMemory,homeController,staticController,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,viewResolver,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0,org.springframework.format.support.FormattingConversionServiceFactoryBean#0,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#0,org.springframework.web.servlet.handler.MappedInterceptor#0,org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver#0,org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver#0,org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver#0,org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchy 
INFO 2017-09-20 21:50:00,351 [localhost-startStop-2] org.springframework.beans.factory.support.DefaultListableBeanFactory - Destroying singletons in org.s[email protected]3917dc5c: defining beans [welcomeController,appTiersHeapMemoryUsed,webController,downloadController,modelController,appTiersMemoryUsage,appDynamicsMain,appTiersCPU,appTiersCurrentHeapMemoryUsage,appTiersTotalMemory,homeController,staticController,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,viewResolver,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0,org.springframework.format.support.FormattingConversionServiceFactoryBean#0,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#0,org.springframework.web.servlet.handler.MappedInterceptor#0,org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver#0,org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver#0,org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver#0,org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchy 
ERROR 2017-09-20 21:50:00,352 [localhost-startStop-2] org.springframework.web.servlet.DispatcherServlet - Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0': Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.springframework.web.bind.annotation.RequestMapping.consumes()[Ljava/lang/String; 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) 
     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 
     at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631) 
     at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588) 
     at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645) 
     at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508) 
     at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449) 
     at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133) 
     at javax.servlet.GenericServlet.init(GenericServlet.java:158) 
     at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183) 
     at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099) 
     at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:989) 
     at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4931) 
     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5241) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) 
     at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:988) 
     at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1860) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
     at java.lang.Thread.run(Thread.java:748) 
Caused by: java.lang.NoSuchMethodError: org.springframework.web.bind.annotation.RequestMapping.consumes()[Ljava/lang/String; 
     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.createRequestMappingInfo(RequestMappingHandlerMapping.java:149) 
     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.getMappingForMethod(RequestMappingHandlerMapping.java:105) 
     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.getMappingForMethod(RequestMappingHandlerMapping.java:1) 
     at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$1.matches(AbstractHandlerMethodMapping.java:139) 
     at org.springframework.web.method.HandlerMethodSelector$1.doWith(HandlerMethodSelector.java:62) 
     at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:473) 
     at org.springframework.web.method.HandlerMethodSelector.selectMethods(HandlerMethodSelector.java:58) 
     at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.detectHandlerMethods(AbstractHandlerMethodMapping.java:137) 
     at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:107) 
     at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initApplicationContext(AbstractHandlerMethodMapping.java:87) 
     at org.springframework.context.support.ApplicationObjectSupport.initApplicationContext(ApplicationObjectSupport.java:119) 
     at org.springframework.web.context.support.WebApplicationObjectSupport.initApplicationContext(WebApplicationObjectSupport.java:71) 
     at org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(ApplicationObjectSupport.java:73) 
     at org.springframework.context.support.ApplicationContextAwareProcessor.invokeAwareInterfaces(ApplicationContextAwareProcessor.java:117) 
     at org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:92) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:394) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1448) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
     ... 31 more 
관련 문제