Проблема с Javapns - зависание на pushManager.sendNotification (клиент, aPayload); функция - PullRequest
0 голосов
/ 24 июля 2011

Каждый раз, когда я пытаюсь отправить уведомление

Получите следующую ошибку: Соединение инициализировано ... Попытка не удалась ... попытка снова 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 ()));

Сокет закрыт, но я не знаю, почему это будет?

Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 11 октября 2011

JavaPNS недавно была обновлена ​​до 2.0, и исправлены ВСЕ сообщенные проблемы до даты выпуска.Это решает проблему, которую вы описываете.

Sylvain

0 голосов
/ 18 июля 2012

Разве нам не нужно указывать сервер sanbox для сервера разработки или производства для AdHoc?

...