2017-08-18 4 views
1

これは私を夢中にしています。私はSpringのコーディングをうまくやったことがありますが、これは初めてJavaですべての設定をしようとしています。私はstackoverflowやその他の場所を網羅していますが、他の人はこの問題を見ていますが、私の解決策のどれも私のために働いていません。ここでSpring 4 RESTアプリケーションでJava設定(xml)を使用しています。IllegalArgumentException

は、私のソースファイルは、次のとおりです。

イニシャライザ:

public class EnhancedCandidateInfoInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 
    private static final Logger logger = LoggerFactory.getLogger(EnhancedCandidateInfoInitializer.class); 

    @Override 
    protected Class<?>[] getRootConfigClasses() { 
     logger.info("@@@@@ getRootConfigClasses called - returning null @@@@@"); 
     return null; 
    } 

    @Override 
    protected Class<?>[] getServletConfigClasses() { 
     logger.info("@@@@@ getServletConfigClasses called returning EnhancedCandidateInfoWebConfiguration.class @@@@@"); 
     return new Class[] { EnhancedCandidateInfoWebConfiguration.class }; 
    } 

    @Override 
    protected String[] getServletMappings() { 
     logger.info("@@@@@ getServletMappings called @@@@@"); 
     return new String[] { "/" }; 
    } 
} 

WebMvcConfiguration:

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages = {"com.mojorank.restapi"}) 
public class EnhancedCandidateInfoWebConfiguration extends WebMvcConfigurerAdapter { 
    private static final Logger logger = LoggerFactory.getLogger(EnhancedCandidateInfoWebConfiguration.class); 
    @Override 
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
     logger.info("#### My Configuration handler was called ####"); 
     configurer.enable(); 
    } 
} 

コントローラー:

@RestController 
public class EnhanceCandidateInfoController { 
    @RequestMapping("/") 
    public String welcome() {//Welcome page, non-rest 
     return "Welcome to RestTemplate Example."; 
    } 

    @RequestMapping("/hello/{player}") 
    public Message message(@PathVariable String player) {//REST Endpoint. 

     Message msg = new Message(player, "Hello " + player); 
     return msg; 
    } 
} 

私が構築し、アプリを展開する場合同じ名前で登録された別のサーブレットがある場合dispatcher'.Check」名前のサーブレットの登録に失敗しました:java.lang.IllegalArgumentExceptionが:

によって引き起こさ:Tomcatにカチオンが、私は次の例外スタックトレースを取得します。 org.springframework.web.servlet.support.AbstractDispatcherServletInitializer.registerDispatcherServletでorg.springframework.util.Assert.notNull(Assert.java:115) (AbstractDispatcherServletInitializer.java:98)org.springframework.web.servletで で。 org.apache.catalina.core.StandardContext.startInternalでorg.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:169) でsupport.AbstractDispatcherServletInitializer.onStartup(AbstractDispatcherServletInitializer.java:71) (StandardContext.java:5274) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

私が言ったように、私はstackoverflowと他の場所を検索し、同じ問題を抱えている他のものを見つけましたが、提案された修正を実装しようとしたとき、私の問題は残っていました。助けを前にありがとう。

答えて

-1
はこれにあなたの WebMvcConfiguration方法を変更

public class EnhancedCandidateInfoWebConfiguration extends WebMvcConfigurerAdapter {  

     @Override    
     public void configureViewResolvers(ViewResolverRegistry registry) { 
      InternalResourceViewResolver ivr=new InternalResourceViewResolver(); 
      ivr.setPrefix("/WEB-INF/jsp/"); 
      ivr.setSuffix(".jsp"); 
      ivr.setExposeContextBeansAsAttributes(true); 
      registry.viewResolver(ivr); 
     } 
    } 
関連する問題