当前位置: 首页 > 知识库问答 >
问题:

无法访问Spring Boot and Jersey应用程序中的某些控制器

公孙栋
2023-03-14

我有一个小问题访问一些控制器。当我向/发送请求时,我会得到一个HTTP404,对于movies路径也是如此。

package com.emo.server; 


@Configuration
@ComponentScan({"com.emo.server", "com.emo.server.controller"})
@EnableAutoConfiguration
public class App {
    public static void main(String[] args) {
    SpringApplication.run(App.class, args);
}


@Path("/")
public String home() {
    return "Hello World";
}


@Configuration
@EnableResourceServer
protected static class ResourceServer extends ResourceServerConfigurerAdapter {

    @Override
    public void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        http            
            .authorizeRequests().antMatchers("/movies").permitAll()
            .and()
            .authorizeRequests()
            .antMatchers("/test")
            .access("#oauth2.hasScope('read')");
        // @formatter:on
    }

    @Override
    public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
        resources.resourceId("test");
    }

}


@Configuration
@EnableAuthorizationServer
protected static class OAuth2Config extends AuthorizationServerConfigurerAdapter {

    @Autowired
    private AuthenticationManager authenticationManager;

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        endpoints.authenticationManager(authenticationManager);
    }

    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        // @formatter:off
        clients.inMemory()
                .withClient("my-trusted-client")
                .authorizedGrantTypes("password", "authorization_code", "refresh_token", "implicit")
                .authorities("ROLE_CLIENT", "ROLE_TRUSTED_CLIENT")
                .scopes("read", "write", "trust")
                .resourceIds("test")
                .accessTokenValiditySeconds(60)
                .and()
                .withClient("my-client-with-secret")
                .authorizedGrantTypes("client_credentials", "password")
                .authorities("ROLE_CLIENT")
                .scopes("read")
                .resourceIds("test")
                .secret("secret");
        // @formatter:on
    }

}

MovieController的一部分:

package com.emo.server.controller;

@Component
@Path("/movies")
@Produces(MediaType.APPLICATION_JSON)
public class MovieController {

    private static final Logger LOGGER = LoggerFactory.getLogger(MovieController.class);

    @GET
    @Path("/")
    public Response getMovies() {
        System.out.println("Just a test after ....");
    }

从这一个,我希望a只是得到一个测试后,但我得到了404。

控制台部分:

> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost:8080
> Accept: */*
> 
< HTTP/1.1 404 Not Found
* Server Apache-Coyote/1.1 is not blacklisted
< Server: Apache-Coyote/1.1
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: 0
< X-Frame-Options: DENY
< X-Application-Context: application
< Content-Type: application/json;charset=UTF-8
< Transfer-Encoding: chunked
< Date: Wed, 07 Oct 2015 19:15:20 GMT
< 
* Connection #0 to host localhost left intact
{"timestamp":1444245320491,"status":404,"error":"Not Found","message":"No message available","path":"/"}

我的项目图片:

我尝试用resourceConfig注册我的控制器,但发生了同样的事情。

我可以访问一些endpoint,如oauth/tokenhealt、...我使用spring-boot和jersey作为java 8的REST框架。

共有1个答案

段干瑞
2023-03-14

尝试将控制器注释更改为如下所示:

@Controller
@RequestMapping(value="/movies", produces="application/json)
public class MovieController{

    @RequestMapping(value="/", method=RequestMethod.GET)
    public MyResponseObject getMovies(){
        //you can return a POJO object if you are using a Jackson Mapper
        return new MyResponseObject("foo", "bar");
    }

}
 类似资料:
  • 我在Symfony2中有REST API,在AngularJS中有客户端应用。我有用户,用户有Symfony2角色(ROLE_ADMIN,ROLE_USER)。 在security.yml是部分,但在这里我只能设置Symfony2路由路径。 如何阻止对路径的访问,例如: 对于角色为_USER或匿名的用户? (#/某物-是Angular url)

  • 所以,我开始使用昂首阔步。我绝对喜欢它的功能,但我对所有方法的可用性有一些怀疑。 据我所知--Swaschbuclke“Auth”方法中包含的所有方法实际上都是关于API本身的,但我在这方面不需要帮助--我的所有API都受到API ID/密钥对的保护。 我想以某种方式使用ASP.NET标识(登录系统)来限制对API页面(/swagger/ui/index)的访问。 有什么办法吗?Swaschbuc

  • 我的spring boot应用程序中目前只有两个类。第一个是main主引导应用程序类,另一个是服务类。我在应用程序类中声明了如下属性源文件: 其他类是FTPService,其中属性值in使用@value,如下所示: 它打印空。也尝试用下面的注释来注释FTPService,但不起作用。尝试将属性复制到Application.properties,但不起作用。 我的属性文件在src/main/reso

  • 问题内容: 我正在尝试从容器访问二进制ed 。当我使用它时,但是找不到我使用它时。 复制的最小步骤: 1.创建Dockerfile.test 构建并运行。这可行。 docker build . -t migrate_test -f Dockerfile.test docker run –name migrate_test migrate_test:latest Usage: migrate OPT

  • 我有一个Spring Boot应用程序,它在9000端口本地运行(不在容器中)。应用程序已将致动器配置为Prometheus测微计,整个统计信息可通过URL localhost获得:9000/致动器/Prometheus。 我使用以下命令在Docker容器中运行Prometheus: 普罗米修斯。yml公司 命令返回以下内容: 我怎样才能解决这个问题? 感谢您的帮助!

  • 我试图在中运行控制台应用程序,但出现错误。 异常“yii\base\UnknownPropertyException”,在F:\xampp\htdocs\mdc\vendor\yiisoft\yii2\base\Component中显示消息“设置未知属性:yii\console\Response::formatters”。菲律宾比索:209 Common\config\main本地。php Cro