小编akn*_*non的帖子

OAuth2.0隐式授权流程.为什么要使用url哈希片段?

通过新的OAuth2.0规范(rfc 6749),我看到隐式授权协议工作流使用Url Hash Fragments来交换授权服务器和公共客户端之间的"access_token".

参见规范:http://tools.ietf.org/html/rfc6749#section-4.2

授权授权响应不能作为"查询参数"而不是Url片段发送,保持流的其他部分不变吗?

基本上我无法理解OAuth2的规范作者为隐式授权流授权选择url哈希片段的限制?

oauth-2.0

28
推荐指数
2
解决办法
8807
查看次数

依赖性反转和分离的接口模式(或一般的接口代码)之间有什么区别?

我无法弄清楚依赖性反转原理(SOLID原则之一)与通用"代码到接口"或分离接口模式之间的区别.他们都提倡创建一个抽象层来分离较低级别和较高级别的模块.

DI原则设想创建在更高层和更低层模块之间交互的接口,但也坚持接口必须是更高层包的一部分.
为什么这应该是更高层次而不是更低层次的一部分?它是暴露其行为的较低级别,所以解耦接口不应该是较低级别的一部分吗?如果有多个更高级别的模块取决于相同的较低级别怎么办?

或者,
为什么不制作一个单独的包来放置所有接口,然后可以被更高级别和更低级别使用?(这是分离接口模式设想的.)

我的困境是,我无法弄清楚它们的相对用途和好处.

请不要引用Derek Greer或Robert Martin的文章.我读过这些文章,但仍然存在混淆.

java interface dependency-inversion

9
推荐指数
1
解决办法
954
查看次数

将新文件添加到监视文件夹时,Java NIO监视服务创建了"ENTRY_CREATE"和"ENTRY_MODIFY"

我使用java.nio.file.WatchService看到一个奇怪的行为(不确定我是预期的行为).

问题是我在WatchService中注册了一个文件夹.当我将一个新文件复制到这个文件夹中时,会生成两个WatchEvent,每个一个用于:

'ENTRY_CREATE'和'ENTRY_MODIFY'.

据我所知,一个新文件(从其他未被监视的目录复制)必须只创建一个事件,即:'ENTRY_CREATE'.

任何人都可以解释为什么会创建额外的事件'ENTRY_MODIFY'吗?

我的代码:

public void watch() {
    WatchKey key = watcher.poll();

    //log.info("Watcher scheduler running. Watch key {}", key.hashCode());

    if (key != null) {
        Workflow workflow = keys.get(key);
        log.info("Runing watcher for key '{}'  and workflow {}", key.hashCode(), workflow.getName());
        File hotFolder = new File(workflow.getFolderPath());
        Path dir = hotFolder.toPath();

        for (WatchEvent<?> event : key.pollEvents()) {
            WatchEvent<Path> ev = cast(event);
            Path name = ev.context();
            Path child = dir.resolve(name);

            log.info("Polling event for name {} and child {} and dir {}", name.toFile(), child.toFile(), …
Run Code Online (Sandbox Code Playgroud)

java nio watchservice

9
推荐指数
1
解决办法
3455
查看次数

Spring BOOT出错

我正在使用Spring BOOT运行一个简单的桌面应用程序.下面是错误堆栈:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultServletHandlerMapping' defined in class path resource [org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.HandlerMapping]: Factory method 'defaultServletHandlerMapping' threw exception; nested exception is java.lang.IllegalArgumentException: A ServletContext is required to configure default servlet handling
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1119)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1014)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
	at com.pb.relay.RelayDesktopApp.main(RelayDesktopApp.java:25)
Caused by: org.springframework.beans.BeanInstantiationException: …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc spring-boot

5
推荐指数
2
解决办法
3万
查看次数

413 请求实体太大 - 使用 Spring Boot 和 Rest 模板

使用 Spring Rest 模板上传 100 MB 文件,使用多部分发布请求。

客户代码:

HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.MULTIPART_FORM_DATA);
    MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();

    map.add("name", chunk.getFilename());
    map.add("filename", chunk.getFilename());
    map.add("flowChunkNumber", chunk.getNumber());
    map.add("flowChunkSize", chunkSize);
    map.add("flowIdentifier", chunk.getIdentifier());
    map.add("flowTotalSize", chunk.getTotalSize());
    map.add("flowCurrentChunkSize", chunk.getSize());
    map.add("file", chunk.getResource() );

    HttpEntity<MultiValueMap<String, Object>> entity = new HttpEntity<MultiValueMap<String, Object>>(map, headers);


    ResponseEntity<String> response = executeForResponse(
            baseUri().path("/api/v1/uploads/chunks")
                                        .build().toUri(), HttpMethod.POST, entity, String.class);
Run Code Online (Sandbox Code Playgroud)

但是,服务器(部署在 Amazon AWS 上的 Springs Boot 应用程序)返回:

org.springframework.web.client.HttpClientErrorException: 413 Request Entity Too Large
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91)
    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:614)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:570)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:545)
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:466)
Run Code Online (Sandbox Code Playgroud)

奇怪的是,我可以使用 angular …

java spring amazon-web-services resttemplate angularjs

5
推荐指数
1
解决办法
2万
查看次数

Java并发原语 - 比较和交换

Java 5引入了一些并发原语,如比较和交换,比较和设置(一起作为CAS)和其他一些.
据我所知,所有这些操作都保证是原子的.因此,对于每个操作,似乎必须有一个JVM字节代码指令?

我正在查看字节码指令列表,但没有找到像CAS这样的方法.

不确定,我说CAS必须有单字节代码指令,或者CAS机制在java中执行/实现的方式有何不同?

java

1
推荐指数
1
解决办法
2239
查看次数