我目前正在学习更多关于在Spring Boot webapp中实现JDBC和使用数据库的知识,我在帖子的底部遇到了以下Stack Trace.
我创建了一个简单的Employee模型,我试图在我的main()所在的同一个类上执行一些数据库代码.模型和主类是整个项目中存在的唯一两个java文件.我正在尝试实现以下run()代码,该代码覆盖了接口CommandLineRunner中的那个,但是我没有得到log.info之后的日志("A部分:"):
log.info("Part A:")
employees.forEach(employee -> {log.info(employee.toString());
log.info("part a");});
Run Code Online (Sandbox Code Playgroud)
- 我注意到了:
我注意到堆栈跟踪开始之前的日志的最后一行来自:"Thread-1"而不是"main".我认为这意味着来自除main之外的某个地方的线程在正常关闭之前遇到错误和关闭连接.
另外,我认为因为HikariPool在"peer's close_notify"之前关闭,我认为它指的是HikariPool的正常关闭,我无法看到我一直试图获取的最后一点日志记录.我希望看到的最后一点日志记录是已插入到我的数据库中的员工的日志记录.
我希望看到的最后一点日志记录应该从这行代码中获得:
employees.forEach(employee -> {log.info(employee.toString());
log.info("part a");});
Run Code Online (Sandbox Code Playgroud)
- 要注意的事项:
由于日志中的这一行,我以为我会看到员工插入到我的数据库中,但当我直接在MySQL命令行客户端上查询时,它返回一个空集:
2018-11-03 21:08:35.362 INFO 2408 --- [ main] c.j.jdbctest1.JdbcTest1Application : rows affected: 1
Run Code Online (Sandbox Code Playgroud)
我不明白为什么在没有任何内容插入数据库时,行会受到影响.
堆栈跟踪和日志:(下面粘贴的堆栈跟踪实际上会重复几次,但我为了简洁而将其剪掉了.)
2018-11-03 21:08:32.997 INFO 2408 --- [ main] c.j.jdbctest1.JdbcTest1Application : Starting JdbcTest1Application on KitKat with PID 2408 (C:\Users\Nano\Downloads\jdbc-test1\jdbc-test1\target\classes started by Nano in C:\Users\Nano\Downloads\jdbc-test1\jdbc-test1)
2018-11-03 21:08:33.003 INFO 2408 --- [ main] c.j.jdbctest1.JdbcTest1Application : No …Run Code Online (Sandbox Code Playgroud) 我的android代码中有一个函数,它使用KSOAP将数据发送到Web服务.我能够将数据发送到服务,但有时我得到一个例外:"系统调用期间SSLException I/O错误,连接超时".
在进行了几次测试后,我的观察结果如下:
我对如何克服这个异常毫无头绪.如果你能建议/指导我如何克服这个例外将是一个很大的帮助.
以下是用于将数据发送到在ASYNC任务中调用的Web服务的方法.
public String incidentDataToServer(JSONObject incidentJSON) {
// package the request
SoapObject Request = new SoapObject(INCIDENT_NAMESPACE,
INCIDENT_METHOD_NAME);
String incidentData = incidentJSON.toString();
PropertyInfo pi = new PropertyInfo();
pi.setName("IncidentJSonString");
pi.setValue(incidentData);
pi.setType(String.class);
Request.addProperty(pi);
// set the soap serialization envelope, set it to .net and package
// the entire request and pass to soap envelope.
SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
soapEnvelope.dotNet = true;
soapEnvelope.setOutputSoapObject(Request);
HttpTransportSE aht = new HttpTransportSE(URL);
try {
aht.call(INCIDENT_SOAP_ACTION, soapEnvelope);
SoapPrimitive resultString = …Run Code Online (Sandbox Code Playgroud) 有时下面的代码会失败,有时它会起作用.我正在使用Java8.这是服务器方面的问题吗?
线程"main"中的异常javax.net.ssl.SSLException:不支持的记录版本Unknown-0.0.
编辑:我从JDK8降级到JDK7,它的工作原理.我发现唯一有效的解决方案.
public static void main(String[] args) throws Exception {
URL u = new URL("https://c********.web.cddbp.net/webapi/xml/1.0/");
HttpURLConnection connection = (HttpURLConnection) u.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setInstanceFollowRedirects(false);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "text/plain");
connection.setRequestProperty("charset", "utf-8");
connection.setRequestProperty("Content-Length", "" + 140);
connection.setUseCaches(false);
DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Simpl3r,这是一个简单的高级Android API,可以使用Amazon S3服务上传强大且可恢复的多部分文件,将媒体文件上传到我的存储桶.
在一些上传,我收到SSLException错误.这是抛出异常的代码:
(根据Simpl3r示例,我的类是IntentService的子类)
@Override
protected void onHandleIntent(Intent intent) {
String filePath = intent.getStringExtra(ARG_FILE_PATH);
final String s3ObjectKey = intent.getStringExtra(ARG_OBJECT_KEY);
File fileToUpload = new File(filePath);
String s3BucketName = getString(R.string.s3_bucket);
final String msg = "Uploading " + s3ObjectKey + "...";
// create a new uploader for this file
uploader = new Uploader(this, s3Client, s3BucketName, s3ObjectKey, fileToUpload);
// listen for progress updates and broadcast/notify them appropriately
uploader.setProgressListener(new UploadProgressListener() {
@Override
public void progressChanged(ProgressEvent progressEvent,
long bytesUploaded, int percentUploaded) {
Notification …Run Code Online (Sandbox Code Playgroud) 我在Android中使用Volley来执行我的应用程序请求.不幸的是,我收到以下错误:
com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x61e15f78: Failure in SSL library, usually a protocol error
error:1407743E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert inappropriate fallback (external/openssl/ssl/s23_clnt.c:744 0x5b647c58:0x00000000)
Run Code Online (Sandbox Code Playgroud)
我在Fragments内部使用两个,ViewPager在onResume期间请求他们的内容.请求url基本相同,但是对于查询参数(设置内容的类型,例如趋势与热).
网址是形式https://host/api/content?type={hot/trending}.授权通过请求标头完成.
关于此异常的奇怪部分是两个请求中只有一个失败,并且它不时变化.在我们之间添加延迟后,异常停止发生(奇怪地指向一些竞争条件?).但这似乎是一个糟糕的解决方法,我想以正确的方式解决这个问题.
关于它可能是什么原因的任何想法?
编辑:
请求以标准方式创建,使用提供队列的单例,如下所示:
final RequestQueue requestQueue = RequestQueueSingleton.getInstance(getActivity()).getRequestQueue();
final GsonRequestGet<SearchApiWrapper> gsonRequest = new GsonRequestGet<>(clazz, url,successListener, errorListener);
gsonRequest.setRetryPolicy(new DefaultRetryPolicy(3000, 3, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
gsonRequest.setTag(mTag);
requestQueue.add(gsonRequest);
Run Code Online (Sandbox Code Playgroud)
这是单身人士课程:
public class RequestQueueSingleton {
private static RequestQueueSingleton mInstance;
private RequestQueue mRequestQueue;
private Context mContext;
public RequestQueueSingleton(Context context) {
mContext = context;
mRequestQueue = getRequestQueue();
} …Run Code Online (Sandbox Code Playgroud) 我将我的文件从android上传到aws服务.我这样配置:
AwsMetadata awsMetadata = resultData.getParcelable(Params.CommandMessage.EXTRA_MESSAGE);
AWSCredentials awsCredentials = new BasicAWSCredentials(
awsMetadata.getAccountId(),
awsMetadata.getSecretKey()
);
// set up region
TransferManager transferManager = new TransferManager(awsCredentials);
Region region = Region.getRegion(Regions.fromName(awsMetadata.getRegionEndpoint()));
transferManager.getAmazonS3Client().setRegion(region);
final MediaItem mediaItem = datasource.get(0);
Log.d(App.TAG, "File is exists: "
+ mediaItem.getContentUri() + " "
+ new File(mediaItem.getContentUri()).exists());
// prepare file for upload
PutObjectRequest putObjectRequest = new PutObjectRequest(
awsMetadata.getBucketName(),
awsMetadata.getSecretKey(),
new File(mediaItem.getContentUri())
);
Log.d(App.TAG, "Total data: " + mediaItem.getSize());
Upload upload = transferManager.upload(putObjectRequest, new S3ProgressListener() {
private int totalTransfered = 0;
@Override
public …Run Code Online (Sandbox Code Playgroud) 我在 springboot 应用程序中使用 webclient 来调用外部 Restful Web 服务。间歇性地出现此异常。
javax.net.ssl.SSLException: SSLEngine closed already SSLEngine closed already
Run Code Online (Sandbox Code Playgroud)
在收到此异常之前,我在日志中看到以下警告。
javax.net.ssl.SSLException:
at io.netty.handler.ssl.SslHandler.wrap (SslHandler.java854)
at io.netty.handler.ssl.SslHandler.wrapAndFlush (SslHandler.java811)
at io.netty.handler.ssl.SslHandler.flush (SslHandler.java792)
at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0 (AbstractChannelHandlerContext.java750)
at io.netty.channel.AbstractChannelHandlerContext.invokeFlush (AbstractChannelHandlerContext.java742)
at io.netty.channel.AbstractChannelHandlerContext.flush (AbstractChannelHandlerContext.java728)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.flush (CombinedChannelDuplexHandler.java531)
at io.netty.channel.ChannelOutboundHandlerAdapter.flush (ChannelOutboundHandlerAdapter.java125)
at io.netty.channel.CombinedChannelDuplexHandler.flush (CombinedChannelDuplexHandler.java356)
at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0 (AbstractChannelHandlerContext.java750)
at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush (AbstractChannelHandlerContext.java765)
at io.netty.channel.AbstractChannelHandlerContext.write (AbstractChannelHandlerContext.java790)
at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush (AbstractChannelHandlerContext.java758)
at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush (AbstractChannelHandlerContext.java808)
at io.netty.channel.DefaultChannelPipeline.writeAndFlush (DefaultChannelPipeline.java1025)
at io.netty.channel.AbstractChannel.writeAndFlush (AbstractChannel.java294)
at reactor.netty.http.HttpOperations.lambda$send$0 (HttpOperations.java123)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext (MonoFlatMap.java118)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext (FluxMapFuseable.java121)
at reactor.core.publisher.FluxContextStart$ContextStartSubscriber.onNext (FluxContextStart.java96)
at reactor.core.publisher.Operators$ScalarSubscription.request (Operators.java2344) …Run Code Online (Sandbox Code Playgroud) sslengine sslexception spring-boot reactor-netty spring-webclient
我创建了一个Android应用程序和两个服务器应用程序。
服务器详细信息带有SSL的Tomcat 6。
我的两个服务器都在HTTPS上。
在此应用程序中,我从服务器“ A”读取命令并进行处理。处理完成后,我需要将其发送至服务器“ B”进行验证,并需要将完整的报告(连同服务器“ B”的响应一起)发送至服务器“ A”回来。
现在,当我运行我的应用程序时,everinging看起来一切正常,但是在大约160到170个服务器连接之后,它给出了SSLException:无法创建应用程序数据。
起初我以为这可能与tomcat有关,但是如果我在HTTP上移动服务器,一切都会正常。我没有遇到任何单一问题。
以下是我的服务器通信代码:
public final class ServerCommunicator {
private static final int TIMEOUT = 30000;
public static long counter = 0;
public static String sendToTestTool(String url, String dataToSend) {
String encodedString = null;
counter = counter + 1;
System.out.println("Counter :" + counter);
try {
encodedString = getBase64EncodedString(dataToSend);
return sendToServer(encodedString, url);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}
public static String sendToWSCServer(String dataToSend, String url) {
counter = counter …Run Code Online (Sandbox Code Playgroud) 善良的 Attn 版主:在将此查询标记为重复之前,请注意我已检查 - Link1、Link2、Link3并且无法解决该问题。我也相信上下文和错误与那些不同,因此在这里寻求帮助。
上下文:从 NSEIndia 网站下载 csv 文件到本地文件夹(注意:可以从其他随机网站下载 CSV 文件)。
问题:返回错误 - javax.net.ssl.SSLException:连接重置(完整错误粘贴在下面)
观察:我很困惑,因为我昨天遇到了同样的问题,但经过几次重试后,它奏效了。我没有更改代码或设置。
问题:有什么我可以做的,以确保在这个特定网站上看不到这个错误?
代码:
// Using FileUtils from -> import org.apache.commons.io.FileUtils;
try {
FileUtils.copyURLToFile(new URL("https://www.nseindia.com/content/fo/fo_mktlots.csv"),new File("D:\\Download\\t1.csv"));
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
错误:
javax.net.ssl.SSLException: Connection reset
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:127)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:324)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:267)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:262)
at java.base/sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1652)
at java.base/sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:1038)
at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:245)
at java.base/java.io.BufferedInputStream.read1(BufferedInputStream.java:285)
at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:344)
at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:746)
at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:689)
at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:717)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1610) …Run Code Online (Sandbox Code Playgroud) 我有一个小程序试图从特定的HTTPS URL获取内容.我使用了以下示例代码:
URL url = new URL(urlLink);
URLConnection urlConn = (URLConnection)url.openConnection(); //https:link
urlConn.setDoInput(true);
urlConn.setDoOutput(true);
urlConn.setUseCaches(false);
urlConn.setRequestProperty("Accept-Language","en");
urlConn.setAllowUserInteraction(false);
urlConn.setRequestProperty("Content-length",String.valueOf(data.length()));
urlConn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
DataOutputStream out=new DataOutputStream(urlConn.getOutputStream());
out.writeBytes(data);
out.flush();
out.close();
Run Code Online (Sandbox Code Playgroud)
我间歇性地收到以下异常:
*** ServerHelloDone
[read] MD5 and SHA1 hashes: len = 4
0000: 0E 00 00 00 ....
AWT-EventQueue-2, handling exception: java.lang.UnsupportedOperationException
%% Invalidated: [Session-6, SSL_RSA_WITH_RC4_128_MD5]
AWT-EventQueue-2, SEND TLSv1 ALERT: fatal, description = internal_error
AWT-EventQueue-2, WRITE: TLSv1 Alert, length = 2
[Raw write]: length = 7
0000: 15 03 01 00 02 02 50 ......P
AWT-EventQueue-2, …Run Code Online (Sandbox Code Playgroud) sslexception ×10
android ×5
java ×3
ssl ×3
spring-boot ×2
amazon-s3 ×1
file-upload ×1
fileutils ×1
gracenote ×1
https ×1
jdbctemplate ×1
ksoap2 ×1
mysql ×1
spring-jdbc ×1
sslengine ×1
tomcat6 ×1