Code Monkey home page Code Monkey logo

java-sdk's Introduction

Qiniu Resource Storage SDK for Java

@qiniu on weibo Software License Build Status GitHub release Docs Coverage Status Latest Stable Version

安装

下载 the latest JAR 或者 通过 Maven:

<dependency>
  <groupId>com.qiniu</groupId>
  <artifactId>qiniu-java-sdk</artifactId>
  <version>[7.15.0, 7.15.99]</version>
</dependency>

或者 Gradle:

implementation 'com.qiniu:qiniu-java-sdk:7.15.+'

运行环境

JDK 7 及以上

使用方法

上传

// 分片上传 v1
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import com.qiniu.storage.Configuration;
import com.qiniu.http.Response;

String accessKey = "Your AccessKey";
String secretKey = "Your SecretKey";
String bucketName = "upload to bucket";
Configuration cfg = new Configuration();
UploadManager uploadManager = new UploadManager(cfg);
Auth auth = Auth.create(accessKey, secretKey);
String token = auth.uploadToken(bucketName);
String key = "file save key";
Response r = uploadManager.put("hello world".getBytes(), key, token);

// 分片上传 v2
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import com.qiniu.storage.Configuration;
import com.qiniu.http.Response;

String accessKey = "Your AccessKey";
String secretKey = "Your SecretKey";
String bucketName = "upload to bucket";
Configuration cfg = new Configuration();
cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;
UploadManager uploadManager = new UploadManager(cfg);
Auth auth = Auth.create(accessKey, secretKey);
String token = auth.uploadToken(bucketName);
String key = "file save key";
Response r = uploadManager.put("hello world".getBytes(), key, token);

其他使用请参考[开发指南]https://developer.qiniu.com/kodo/1239/java 详细的示例请参考[Examples]https://github.com/qiniu/java-sdk/tree/master/examples

测试

$ ./gradlew build

生成Eclipse工程文件

$ ./gradlew gen_eclipse

常见问题

  • QiniuExeption保留了请求响应的信息,失败情况下会抛出此异常,可以提交给我们排查问题。
  • API 的使用 demo 可以参考 单元测试

代码贡献

详情参考代码提交指南

贡献记录

联系我们

  • 如果需要帮助,请提交工单(在portal右侧点击咨询和建议提交工单,或者直接向 [email protected] 发送邮件)
  • 如果有什么问题,可以到问答社区提问,问答社区
  • 更详细的文档,见官方文档站
  • 如果发现了bug, 欢迎提交 issue
  • 如果有功能需求,欢迎提交 issue
  • 如果要提交代码,欢迎提交 pull request
  • 欢迎关注我们的微信 微博,及时获取动态信息。

代码许可

The MIT License (MIT).详情见 License文件.

java-sdk's People

Contributors

bachue avatar callmefisher avatar clouddxy avatar hantuo avatar hktry avatar hughlv avatar hugolipeng avatar icattlecoder avatar ikbear avatar jemygraw avatar liangchaoboy avatar liuchengjason avatar longbai avatar longshanksmo avatar mei-zhao avatar neikochan avatar ox2g avatar pasocon1993 avatar peteryuanpan avatar qn-zhangzhuo avatar rwifeng avatar sxci avatar vanga-top avatar wangjinlei avatar wangtuanjie avatar why404 avatar xushiwei avatar xwen-winnie avatar yangsen-qn avatar zhangzqs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

java-sdk's Issues

用户反馈记录

  1. GetRet 没有 expires。正确应该有 expiry 字段,含义是 expires + current_time ( http://weibo.com/1675757285/zfnPXzaSA )
  2. 最新java sdk2.3.1从github上下下来, mvn package报错; 需要手动将该文件存为utf-8 无bom才可以打包成功; 另外生成的sdk文件名版本是0.0.1 Compilation failure [ERROR] java-sdk-2.3.1\src\test\java\ResumableGUINotifier.java:[1,0] 非法字符: \65279 ( see http://weibo.com/1675757285/zfbl1a83a )

不同块的并发上传

文档中讲“分片上传过程中每个块内部只能按顺序逐一上传该块所切分好的片。而每个块之间相互独立,因此若干个块可以同时进行传输而不会相互干扰,因此我们可以利用这个特征实现并发上传特性。”
可否给一个例子 谢谢

请改一下你们的artifactId

现在的artifactId是sdk,最终打包进war里面的文件名就是sdk.jar,会跟其他的无数的 jar 文件一起放在 WEB-INF/lib 下面,这样很没有标识度的文件名,是非常容易跟其他的同样没有标识度的 jar 文件冲突的。

建议将 artifactId 修改成 qiniu-sdk,这样最终的jar文件将会是qiniu-sdk.jar,会显得更专业

使用java删除七牛文件异常

java.lang.IncompatibleClassChangeError: Found class com.squareup.okhttp.Connection, but interface was expected

jdk环境1.7+

jar包依赖:


<dependency>
 <groupId>com.qiniu</groupId>
 <artifactId>qiniu-java-sdk</artifactId>
 <version>[7.0.0, 7.0.99]</version>
</dependency>

<dependency>
  <groupId>com.squareup.okhttp</groupId>
  <artifactId>okhttp</artifactId>
  <version>2.7.5</version>           
</dependency>

<dependency>        
  <groupId>com.squareup.okio</groupId>
  <artifactId>okio</artifactId>
  <version>1.6.0</version>
</dependency>

请问到底什么版本的okhttp和okio是可以正常使用的?

cant support okhttp 2.4

Request.Builder no longer accepts null if a request body is required. Passing null will now fail for request methods that require a body. Instead use an empty body such as this one:

RequestBody.create(null, new byte[0]);

会抛出异常,需要改下传入参数

URL的Base64编码代码-有无意义的逻辑处理

代码在encodeBase64Ex中实际上最终调用了jdk提供的Base64编码,那么URL版本的Base64编码与传统Base64编码区别在哪?仅仅是62,63位的字符由+变成-,由/变成_,详情参看http://www.ietf.org/rfc/rfc4648.txt。

  public static byte[] urlsafeEncodeBytes(byte[] src) {
    if (src.length % 3 == 0) {
        return encodeBase64Ex(src);
    }

    byte[] b = encodeBase64Ex(src);
    if (b.length % 4 == 0) {
        return b;
    }

    int pad = 4 - b.length % 4;
    byte[] b2 = new byte[b.length + pad];
    System.arraycopy(b, 0, b2, 0, b.length);
    b2[b.length] = '=';
    if (pad > 1) {
        b2[b.length + 1] = '=';
    }
    return b2;
}

这段代码中的
int pad = 4 - b.length % 4;
byte[] b2 = new byte[b.length + pad];
System.arraycopy(b, 0, b2, 0, b.length);
b2[b.length] = '=';
if (pad > 1) {
b2[b.length + 1] = '=';
}
这段逻辑什么时候能用上,实在无法理解,传统Base64算法里,会自动对二进制位数不足进行补齐,满足6位编码的需要,所以这段代码应该是多余的,除非传统的Base64源码算法不正确。

希望增加用于七牛云存储的 Apache Wagon 模块

亲们,希望增加能用于七牛云存储的 Apache Wagon 的 Maven 模块。

使用该模块,用户应可以将七牛云存储当着自己的私有 maven 仓库,可将 artifacts 提交到该仓库,并从该仓库获取指定的 artifacts。

用户应可以将项目的 maven site 发布到七牛的公开空间,方便更多人看到。

亦即,该模块应该实现 Apache Wagon API 的绝大部分功能,可以操作文件和文件夹,可以操作(上传和下载)七牛云存储上自己账户下的公开和私有空间。

Client 连接池大小和并发限制是否可配置

查看了代码,发现 Client 的连接池大小是写死的,并发不够大, 是否可配置呢?

dispatcher.setMaxRequests(64);
dispatcher.setMaxRequestsPerHost(16);
ConnectionPool connectionPool = new ConnectionPool(32, 5, TimeUnit.MINUTES);

        dispatcher.setMaxRequests(64);
        dispatcher.setMaxRequestsPerHost(16);
        ConnectionPool connectionPool = new ConnectionPool(32, 5, TimeUnit.MINUTES);

丰富batch接口的返回值解析

对于stat命令的batch,会返回一系列的数据或者error,对于move,delete,copy,chgm的batch会返回操作结果或error信息,所以使用结构体如下:

public final class BatchStatus {
    /**
     * 批量请求的每个命令的执行结果状态码
     */
    public int code;
    /**
     * 批量请求的每个命令返回的结果
     */
    public BatchOpData data;
}

/**
 * 该类封装了batch接口回复中的data部分
 * 参考文档:<a href="https://developer.qiniu.com/kodo/api/batch">批量操作</a>
 */
public class BatchOpData {
    //batch stat结果
    public long fsize;
    public String hash;
    public String mimeType;
    public long putTime;
    //batch move, copy, delete, chgm结果
    public String error;
}

到底用的是哪个版本?

最新版报错
`
Exception in thread "main" java.lang.NoClassDefFoundError: com/squareup/okhttp/RequestBody
at com.qiniu.storage.BucketManager.(BucketManager.java:29)
at com.test.QiniuDown.main(QiniuDown.java:19)
Caused by: java.lang.ClassNotFoundException: com.squareup.okhttp.RequestBody
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 2 more

`

ResumeableDemo error

java.lang.ArithmeticException: / by zero12994787 : 0 -- 0 : 0%
at com.examples.client.ResumeableDemo$1.run(ResumeableDemo.java:145)
分块上传Demo中报除0错误

[Bug] com.qiniu.http.Client throw NullPointerException

如题。
debug 结果显示
第 39 行存在问题,NullPointerException

httpClient.networkInterceptors().add(new Interceptor() {
            @Override
            public com.squareup.okhttp.Response intercept(Chain chain) throws IOException {
                Request request = chain.request();

                com.squareup.okhttp.Response response = chain.proceed(request);
                IpTag tag = (IpTag) request.tag();
第39行 ->        String ip = chain.connection().getSocket().getRemoteSocketAddress().toString();
                tag.ip = ip;
                return response;
            }
        });

chain.connection 低概率为 null

有没有考虑去除 okhttp,gson 的依赖

有没有考虑过去除对okhttp 的依赖,gson 的依赖。
java 中有httpclient,okhttp,URLConnect 等很多第三方可以请求和解析的http 类的包,json 的世界也是很多:jackson1,2,fastjson,gson 等很多~
不知道是否可以选择性的使用http 组件和json 组件呢

sdk 上传图片报错

sdk 版本 7.1.3

错误日志:

com.qiniu.common.QiniuException
	at com.qiniu.http.Client.send(Client.java:245)
	at com.qiniu.http.Client.multipartPost(Client.java:218)
	at com.qiniu.http.Client.multipartPost(Client.java:186)
	at com.qiniu.storage.FormUploader.upload(FormUploader.java:52)
	at com.qiniu.storage.UploadManager.put(UploadManager.java:126)
	at com.qiniu.storage.UploadManager.put(UploadManager.java:104)
	at io.cloudinsight.alert.service.impl.QiniuImageStoreService.upload(QiniuImageStoreService.java:40)

报错挺频繁的

当使用相同的KEY,上传文件问题

当使用相同的KEY,上次文件的时候
如果 我设置了scope为bucket:key 为这种模式的时候 7牛服务端 报 bad token

如果 我设置 scope为bucket为这种模式的时候 7牛服务端 报 File already exist

这个问题困扰很久了,希望能及时回复

改进对 final class 的处理

我司长期使用 7.0.3 版本。在一些 TestCase 里面,需要 mock 一些类,比如 OperationManager
然而新版本 7.1.2 将这类 Manager 设置为 final,作为一个 Library,将 Service 类型设置为 final,虽然保证了外部无法进行修改,但是也同时关上一扇门。后果是之一是导致无法 mock 进行单元测试,甚为遗憾。

能否考虑一下用户的这类场景,将 final class 去掉?

改进对异常的处理

看到不少代码里面捕获异常后都是直接输出到控制台的,建议使用 logger 来处理。

关于“回调通知callback”的问题

  1. 如果客户端使用标准SDK,那么业务服务器处理回调通知后的返回消息格式有什么要求?
    官网在线文档说明中给的示例是返回:{"success":true,"name":"sunflowerb.jpg"},然而github上的关于回调流程.md说明示例给的是{"response": "success"}。由于这个返回消息会透传给客户端,那么这个格式是否有要求?
  2. 服务端进行回调接口安全验证时,建议JAVA SDK中提供方法进行安全验证,这个是通用需求;
    目前Java SDK中还缺少回调安全验证、响应返回的完整使用示例,还不够友好,第一次开发时还有一定难度。

com/qiniu/util/Auth : Unsupported major.minor version 51.0

           <dependency>
		<groupId>com.qiniu</groupId>
		<artifactId>qiniu-java-sdk</artifactId>
		<version>[7.2.0, 7.2.99]</version>
	</dependency>

jdk1.7一直报这个错,又看不到七牛SDK构建版本是多少,在官网找了好久也没有在找到相关的技术支持的(这个不应该吧,连在线的技术支持都没有。。。)

Why my Qiniu SDK have no Json.class

public String uploadTokenWithDeadline(String bucket, String key, long deadline, StringMap policy, boolean strict) {
// TODO UpHosts Global
String scope = bucket;
if (key != null) {
scope = bucket + ":" + key;
}
StringMap x = new StringMap();
copyPolicy(x, policy, strict);
x.put("scope", scope);
x.put("deadline", deadline);

    String s = Json.encode(x);
    return signWithData(StringUtils.utf8Bytes(s));
}

public String uploadTokenWithPolicy(Object obj) {
    String s = Json.encode(obj);
    return signWithData(StringUtils.utf8Bytes(s));
}

重构Zone的代码,合并rs,rsf,api的域名使用

目前七牛有华东,华北,华南,北美几个机房,其中 rs, rsf, api 服务都可以共用域名,即使是北美访问也是经过加速的。

rs.qiniu.com
rsf.qiniu.com
api.qiniu.com

另外这组域名同时配置了http和https的协议。

bucketManager.fetch(url, bucketName, key) 报错!

com.qiniu qiniu-java-sdk [7.0.0, 7.1.99] 我的jdk 1.7 版本,每次都报这个错误 bucketManager.fetch(url, bucketName, key)

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.IncompatibleClassChangeError: Found class com.squareup.okhttp.Connection, but interface was expected
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:972)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.web.filter.ShallowEtagHeaderFilter.doFilterInternal(ShallowEtagHeaderFilter.java:58)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IncompatibleClassChangeError: Found class com.squareup.okhttp.Connection, but interface was expected
at com.qiniu.http.Client$1.intercept(Client.java:39)
at com.squareup.okhttp.internal.http.HttpEngine$NetworkInterceptorChain.proceed(HttpEngine.java:802)
at com.squareup.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:683)
at com.squareup.okhttp.Call.getResponse(Call.java:272)
at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:228)
Jul 04, 2016 2:55:32 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [spring] in context with path [] threw exception [Handler processing failed; nested exception is java.lang.IncompatibleClassChangeError: Found class com.squareup.okhttp.Connection, but interface was expected] with root cause
java.lang.IncompatibleClassChangeError: Found class com.squareup.okhttp.Connection, but interface was expected
at com.qiniu.http.Client$1.intercept(Client.java:39)
at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:199)
at com.squareup.okhttp.internal.http.HttpEngine$NetworkInterceptorChain.proceed(HttpEngine.java:802)
at com.squareup.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:683)
at com.squareup.okhttp.Call.getResponse(Call.java:272)
at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:228)
at com.squareup.okhttp.Call.execute(Call.java:79)
at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:199)
at com.qiniu.http.Client.send(Client.java:195)
at com.squareup.okhttp.Call.execute(Call.java:79)
at com.qiniu.http.Client.post(Client.java:132)
at com.qiniu.http.Client.send(Client.java:195)
at com.qiniu.http.Client.post(Client.java:115)
at com.qiniu.http.Client.post(Client.java:132)
at com.qiniu.storage.BucketManager.post(BucketManager.java:319)
at com.qiniu.http.Client.post(Client.java:115)
at com.qiniu.storage.BucketManager.ioPost(BucketManager.java:309)
at com.qiniu.storage.BucketManager.post(BucketManager.java:319)
at com.qiniu.storage.BucketManager.fetch(BucketManager.java:263)
at com.qiniu.storage.BucketManager.ioPost(BucketManager.java:309)
at com.talicai.server.common.util.QiNiuUploadPicture.uploadPictureUrl(QiNiuUploadPicture.java:65)
at com.qiniu.storage.BucketManager.fetch(BucketManager.java:263)
at com.sun.proxy.$Proxy35.createNewSNSUser(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at com.talicai.server.controller.bill.V3.UserController.loginSNS(UserController.java:212)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
... 32 more
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.web.filter.ShallowEtagHeaderFilter.doFilterInternal(ShallowEtagHeaderFilter.java:58)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.