mysql - 在使用 mysql 8 作为数据存储的 jackrabbit 2.16.2 中上传超过 1 MB 的文件失败
问题描述
我已经用 mysql 8 配置了 jackrabbit 2.16.2。当我尝试上传超过 1 mb 的文件时,它失败了。我能够上传小于 1 mb 的文件。
用于上传的示例代码。
Sardine webdavClient = SardineFactory.begin(new String("****"), new String("****"));
System.out.println("file name :: "+file.getName().replaceAll(" ", "_"));
byte[] content = Files.readAllBytes(file.toPath());
webdavClient.put(dirPath+"/"+file.getName().replaceAll(" ", "_"), content);
请在下面找到 repository.xml 内容:
<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver" value="com.mysql.jdbc.Driver"/>
<param name="url" value="jdbc:mysql://127.0.0.1:3306/jackrabbit"/>
<param name="user" value=""/>
<param name="password" value=""/>
<param name="schema" value="mysql"/>
<param name="schemaObjectPrefix" value="fs_test_store"/>
</FileSystem>
<!--
data store configuration
-->
<DataStore class="org.apache.jackrabbit.core.data.db.DbDataStore">
<param name="url" value="jdbc:mysql://127.0.0.1:3306/jackrabbit"/>
<param name="user" value=""/>
<param name="password" value=""/>
<param name="databaseType" value="mysql"/>
<param name="driver" value="com.mysql.cj.jdbc.Driver"/>
<param name="minRecordLength" value="2048"/>
<param name="maxConnections" value="10"/>
<param name="copyWhenReading" value="false"/>
<param name="tablePrefix" value=""/>
<param name="schemaObjectPrefix" value="test_"/>
</DataStore>
请在下面找到工作区配置
<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver" value="com.mysql.jdbc.Driver"/>
<param name="url" value="jdbc:mysql://127.0.0.1:3306/jackrabbit"/>
<param name="user" value=""/>
<param name="password" value=""/>
<param name="schema" value="mysql"/>
<param name="schemaObjectPrefix" value="fs_test_ws_"/>
</FileSystem>
<PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager">
<param name="driver" value="com.mysql.cj.jdbc.Driver" />
<param name="url" value="jdbc:mysql://127.0.0.1:3306/jackrabbit"/>
<param name="user" value="" />
<param name="password" value="" />
<param name="schema" value="mysql"/>
<param name="schemaObjectPrefix" value="pm_ws_${wsp.name}_"/>
</PersistenceManager>
我改变了mysql参数
max_allowed_packet=100M
我收到以下异常
2019-02-18 16:11:01 [main] DEBUG:: http-outgoing-3 >> "[write] I/O error: Software caused connection abort: socket write error"
2019-02-18 16:11:01 [main] DEBUG:: http-outgoing-3: Close connection
2019-02-18 16:11:01 [main] DEBUG:: http-outgoing-3: Shutdown connection
2019-02-18 16:11:01 [main] DEBUG:: Connection discarded
2019-02-18 16:11:01 [main] DEBUG:: Connection released: [id: 3][route: {}->http://localhost:8080][total kept alive: 0; route allocated: 0 of 2; total allocated: 0 of 20]
2019-02-18 16:11:01 [main] DEBUG:: Cancelling request execution
Exception in thread "main" java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:111)
at java.net.SocketOutputStream.write(SocketOutputStream.java:155)
at org.apache.http.impl.conn.LoggingOutputStream.write(LoggingOutputStream.java:74)
at org.apache.http.impl.io.SessionOutputBufferImpl.streamWrite(SessionOutputBufferImpl.java:124)
at org.apache.http.impl.io.SessionOutputBufferImpl.write(SessionOutputBufferImpl.java:160)
at org.apache.http.impl.io.ContentLengthOutputStream.write(ContentLengthOutputStream.java:113)
at org.apache.http.entity.ByteArrayEntity.writeTo(ByteArrayEntity.java:114)
at org.apache.http.impl.DefaultBHttpClientConnection.sendRequestEntity(DefaultBHttpClientConnection.java:156)
at org.apache.http.impl.conn.CPoolProxy.sendRequestEntity(CPoolProxy.java:160)
at org.apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:238)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:123)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:221)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:165)
at com.github.sardine.impl.SardineImpl.execute(SardineImpl.java:1043)
at com.github.sardine.impl.SardineImpl.execute(SardineImpl.java:1012)
at com.github.sardine.impl.SardineImpl.put(SardineImpl.java:923)
at com.github.sardine.impl.SardineImpl.put(SardineImpl.java:906)
at com.github.sardine.impl.SardineImpl.put(SardineImpl.java:894)
at com.github.sardine.impl.SardineImpl.put(SardineImpl.java:828)
at com.github.sardine.impl.SardineImpl.put(SardineImpl.java:821)
at com.x.platform.core.webdav.test.Test.main(Test.java:46)
注意:Jackrabbit 部署在 tomcat 上。
解决方案
推荐阅读
- apache-kafka - 使用 Oracle DB 时 Kafka 连接器的正确属性是什么
- mysql - 在mysql触发器中找到新记录时无法更新触发表中的记录
- node.js - 在heroku中部署项目时出错,错误代码=H10 desc =“App crashed”
- neo4j - Cypher 按多个值查找和排序
- c - 矩阵 A 和 B 与 C 中的“AND”和“OR”运算的逻辑乘法
- firebase - 从 Firestore 读取和解析数据--- Flutter
- scrapy - 如何以自己的用户名运行scrapyd?
- sql-server - 选择行值的一部分类似于同一列中的另一个值的所有行
- c++ - 如何在文件 C++ 中转发声明类
- azure - 如何使用 azure devops 应用服务部署任务将函数应用设置部署到 azure 函数应用