无权访问Spring启动控制器,但可以访问index.html

时间:2017-12-08 16:00:40

标签: spring tomcat kotlin

我有一个Spring Boot项目,我在远程服务器上部署的项目。当我拨打http://109.206.178.66:8080/proxynator/时 - 我可以看到index.html,但是当我通过网址http://109.206.178.66:8080/proxynator/countries呼叫其他控制器时 - 我有一个错误404 whith

  

描述:原始服务器没有找到目标资源的当前表示,或者不愿意透露该目标资源是否存在。

奇怪的是,因为当我在本地机器上启动这个项目时,一切正常。项目结构是:

project structure

来自catalina.out文件的行:

  

SEVERE [http-nio-8080-exec-19] org.apache.tomcat.util.descriptor.web.WebXmlParser.parseWebXml在[file:/ opt / tomcat / webapps / proxynator]的应用程序web.xml文件中解析错误/ WEB-INF /网。

我的控制器:

@RestController
class MainController(val proxyRepo: ProxyRepo, val countryRepo: 
CountryRepo) {

@GetMapping("/countries")
fun findCountries(): List<Country> = countryRepo.findAll()

@GetMapping("/proxies")
@ResponseBody
fun findProxies(@RequestParam countryid: Int): List<Proxy> = 
proxyRepo.findAllByCountryid(countryid)
}

UPD

我在根软件包

上添加了配置类
@Configuration
open class RestConfiguration {
    @Bean
    open fun mainController():MainController
            = MainController()
}

但它不起作用。我不明白,为什么我可以通过irl index.html看到http://109.206.178.66:8080/proxynator/,但无法访问我的控制器。当我打包我的项目时,我有一些文件: enter image description here

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

使用http://109.206.178.66:8080/countries访问您的api访问权限是错误的访问权限这是您的其余映射的正确途径,而不是http://109.206.178.66:8080/proxynator/countries

答案 1 :(得分:0)

为了解决这个问题,我编辑了我的Application类。

@SpringBootApplication
@EnableAutoConfiguration
open class Application: SpringBootServletInitializer(){

    @Override
    override fun configure(application: SpringApplicationBuilder?): 
    SpringApplicationBuilder {
        return super.configure(application)
    }
}

fun main(args: Array<String>) {
    SpringApplication.run(Application::class.java, *args)
}

我是覆盖配置方法,一切正常! 希望它能为任何人节省时间!