Каждый раз, когда я пытаюсь отправить уведомление
Получите следующую ошибку:
Соединение инициализировано ...
Попытка не удалась ... попытка снова
preclose
в конце концов
enter code here
java.net.SocketException: сокет закрыт
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkEOF (неизвестный источник)
на com.sun.net.ssl.internal.ssl.AppInputStream.read (неизвестный источник)
at sun.nio.cs.StreamDecoder.readBytes (неизвестный источник)
at sun.nio.cs.StreamDecoder.implRead (неизвестный источник)
at sun.nio.cs.StreamDecoder.read (неизвестный источник)
at java.io.InputStreamReader.read (Неизвестный источник)
at java.io.BufferedReader.fill (Неизвестный источник)
at java.io.BufferedReader.readLine (неизвестный источник)
at java.io.BufferedReader.readLine (неизвестный источник)
в ts.javapns.back.PushNotificationManager.sendNotification (PushNotificationManager.java:199)
в org.apache.jsp.japnslist_jsp._jspService (org.apache.jsp.japnslist_jsp: 118)
в org.apache.jasper.runtime.HttpJspBase.service (HttpJspBase.java:97)
на javax.servlet.http.HttpServlet.service (HttpServlet.java:802)
в org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:322)
в org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:291)
в org.apache.jasper.servlet.JspServlet.service (JspServlet.java:241)
на javax.servlet.http.HttpServlet.service (HttpServlet.java:802)
в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:252)
в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:173)
в org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:213)
в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:178)
в org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:126)
в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:105)
в org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:107)
в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:148)
в org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:856)
в org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.processConnection (Http11Protocol.java:744)
в org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket (PoolTcpEndpoint.java:527)
в org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt (LeaderFollowerWorkerThread.java:80)
в org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable.run (ThreadPool.java:684)
at java.lang.Thread.run (неизвестный источник)
enter code here
Какую версию продукта вы используете? На какой операционной системе?
Windows XP, новейшая версия javaapns
// APNs Server Host & port
String HOST = "gateway.sandbox.push.apple.com";
int PORT = 2195;
// Badge
int BADGE = 6;
// iPhone's UDID (64-char device token)
String iPhoneId = "aebf53cc8d6bfaf47dace40747091fa5b0fc837b...";
String certificate = "C:/webapplication/WEB-INF/cert.p12";
String passwd = "password";
System.out.println( "Setting up Push notification" );
//Set system properties .....
System.setProperty("javax.net.ssl.trustStore", "/var/www/apns/<apple.keystore>");
System.setProperty("javax.net.ssl.trustStorePassword", "<pass>");
try {
// Setup up a simple message
PayLoad aPayload = new PayLoad();
aPayload.addBadge( BADGE );
System.out.println( "Payload setup successfull." );
System.out.println ( aPayload );
// Get PushNotification Instance
PushNotificationManager pushManager = PushNotificationManager.getInstance();
System.out.println( "Linking iPhone's UDID (64-char device token) to stringName" );
// Link iPhone's UDID (64-char device token) to a stringName
pushManager.addDevice("iPhone", iPhoneId);
System.out.println( "iPhone UDID taken." );
System.out.println("Token:"+pushManager.getDevice("iPhone").getToken());
// Get iPhone client
Device client = pushManager.getDevice( "iPhone" );
System.out.println( "Client setup successfull." );
// Initialize connection
pushManager.initializeConnection( HOST, PORT, certificate, passwd, SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);
System.out.println( "Connection initialized..." );
// Send message
pushManager.sendNotification( client, aPayload );
System.out.println( "Message sent!" );
//Remove device
pushManager.removeDevice(iPhoneId);
System.out.println( "Removing Device" );
System.out.println("# of attempts:" + pushManager.getRetryAttempts() );
pushManager.stopConnection();
System.out.println( "done" );
} catch (Exception e) {
e.printStackTrace();
}
Насколько я могу судить, у меня возникла проблема на данный момент в файле PushNotificationManager.java
Функция:
public void sendNotification (Устройство, полезная нагрузка PayLoad)
в этой строке sendNotification:
this.socket.getOutputStream (). write (getMessage (device.getToken (), new PayLoad ()));
Сокет закрыт, но я не знаю, почему это будет?
Пожалуйста, помогите.