Wednesday, February 17, 2016

Re: Use synchronous RPC on browser close ?

Hey, thanks for the hint with baconApi but it's the same that the most of our users use IE. 

@Rocco: 

Can you post a little example how you use the synchronous callback. We tried to use the provided example. 

We try to cast our ascync service to GetRemoteServiceProxy but an error occured.

Error: 

SEVERE: Exception caught: com.SchumannGmbH.cam.web.client.CamService_Proxy cannot be cast to com.SchumannGmbH.cam.web.shared.rpc.GetRemoteServiceProxy
com
.google.gwt.event.shared.UmbrellaException: Exception caught: com.SchumannGmbH.cam.web.client.CamService_Proxy cannot be cast to com.SchumannGmbH.cam.web.shared.rpc.GetRemoteServiceProxy
 at com
.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:129)
 at com
.google.gwt.event.logical.shared.CloseEvent.fire(CloseEvent.java:56)
 at com
.google.gwt.event.logical.shared.CloseEvent.fire(CloseEvent.java:41)
 at com
.google.gwt.user.client.Window.onClosed(Window.java:839)
 at sun
.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun
.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
 at sun
.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java
.lang.reflect.Method.invoke(Method.java:606)
 at com
.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
 at com
.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
 at com
.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
 at com
.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:338)
 at com
.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219)
 at com
.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
 at com
.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:571)
 at com
.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279)
 at com
.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
 at com
.google.gwt.core.client.impl.Impl.apply(Impl.java)
 at com
.google.gwt.core.client.impl.Impl.entry0(Impl.java:242)
 at sun
.reflect.GeneratedMethodAccessor58.invoke(Unknown Source)
 at sun
.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java
.lang.reflect.Method.invoke(Method.java:606)
 at com
.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
 at com
.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
 at com
.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
 at com
.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:293)
 at com
.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547)
 at com
.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
 at java
.lang.Thread.run(Thread.java:745)

Our service class: 

/**
 * The client side stub for the RPC service.
 */
@RemoteServiceRelativePath ( "camService")
public interface CamService
    extends RemoteService
{
  Login login( String input, String password, String localname ) throws CAMBackendException,
       LoginException;

  /**
   * @throws CAMBackendException
   * @throws LoginException
   */
  void logout() throws CAMBackendException, LoginException;

  /**
   * @param stammdaten
   * @return array von Stammdaten
   * @throws LoginException
   * @throws CamServerException
   */
  Searchresult search( int moduleKey, Stammdaten stammdaten, int maxEntries, boolean fuzzy )
      throws CAMBackendException, LoginException, SearchException;

  /**
   * @param id
   * @throws LoginException
   * @throws CAMBackendException
   */
  AktenkopfWrapper getAktenkopf( long id, int tabId ) throws LoginException, CAMBackendException;

  /**
   * @param moduleKey
   * @param partnerId
   * @param infoId
   * @throws LoginException
   * @throws CAMBackendException
   */
  AuskunfteiGesamtObject<?> getAuskunfteiGesamtObjekt( int moduleKey, long partnerId,
      long infoId, int auskunftsnummer, boolean createChart ) throws LoginException,
      CAMBackendException;

  /**
   * @param moduleKey
   * @param partnerId
   * @param infoId
   * @param xpsID
   * @throws CAMBackendException
   * @throws LoginException
   */
  AuskunfteiGesamtObject<?> getAuskunfteiGesamtObjektByXPSID(
      long partnerId,
      int moduleKey,
      int auskunftsnummer,
      long infoId,
      long xpsID ) throws LoginException, CAMBackendException;

  /**
   * @param tabellenName
   * @throws LoginException
   * @throws CAMBackendException
   */
  SupportTabelle ladeSupportTabelle( String tabellenName ) throws LoginException,
      CAMBackendException;

  BranchenSystematik[] loadAvailableBranchSystematiken( ) throws LoginException, CAMBackendException;
  
  Branche loadBrancheByID( int branchenid ) throws LoginException, CAMBackendException;
  
  Branche[] loadBranchen( String systematik ) throws LoginException, CAMBackendException;
  
  void saveBranchenZusatzdaten( Branche branche )throws LoginException, CAMBackendException;
  
  BranchenMapping[] loadAllMappings( ) throws LoginException, CAMBackendException;
  
  void saveBranchenMappings( BranchenMapping[] neueBranchenMappings,BranchenMapping[] deletedBranchenMappings ) throws LoginException, CAMBackendException;
  
  /**
   * @param moduleKey
   * @param partnerId
   * @param completeInfo
   * @param auskunftsNummer
   * @throws LoginException
   * @throws CAMBackendException
   */
  int addInfo( int moduleKey, long partnerId, SerializableObject completeInfo,
      int auskunftsNummer ) throws LoginException, CAMBackendException;

  /**
   * @param moduleKey
   * @param partnerId
   * @param completeInfo
   * @param auskunftsNummer
   * @throws LoginException
   * @throws CAMBackendException
   */
  SaveResult validateAndSave( int moduleKey, long partnerId,
      SerializableObject completeInfo, int auskunftsNummer ) throws LoginException,
      CAMBackendException;

  /**
   * @throws LoginException
   * @throws CAMBackendException
   */
  List<ModuleInfo> getAvailableModuleInfos() throws LoginException, CAMBackendException;

  /**
   * @throws LoginException
   * @throws CAMBackendException
   */
  BenutzerContainer loadBenutzerServiceData() throws LoginException, CAMBackendException;

  /**
   * @param id
   * @throws Exception
   */
  String akteSchliessen( long id, int tabId ) throws LoginException, CAMBackendException;

  /**
   * @param filter
   * @throws Exception
   */
  List<WiedervorlageListenElementWrapper> ladeWiedervorlagen( TodoFilter filter ) throws LoginException, CAMBackendException;

  /**
   * Lädt zu einer Risikoakte alle Anträge.
   * 
   * @param risikoPartnerID
   *          PartnerID der Risikoakte.
   * @return Array mit 0...n Antraegen.
   * @throws CAMBackendException
   *           falls Serverfehler beim Laden der Anträge auftritt.
   */
  AntragsHeader[] getAntraegeFuerRisiko( long risikoPartnerID ) throws LoginException,
      CAMBackendException;

  /**
   * Lädt einen bestimmten Antrag vom Server.
   * 
   * @param antragID
   *          ID des Antrags.
   * @return Antragsobjekt, niemals <code>null</code>.
   * @throws CAMBackendException
   *           falls Serverfehler beim Laden des Antrags auftritt.
   */
  Antrag getAntrag( long antragID ) throws LoginException, CAMBackendException;

  /**
   * Liefert alle GBZTypen für den angemeldeten Benutzer vom Server.
   * 
   * @return Array mit konfigurierten GBZ Typen.
   * @throws CAMBackendException
   *           falls Serverfehler beim Laden der GBZTypen auftritt.
   */
  GBZTyp[] getGBZTypen() throws LoginException, CAMBackendException;

  /**
   * Speichert einen bestimmten Antrag auf dem Server und generiert ggf eine Entscheidung
   * 
   * @param antrag
   *          Antragsdaten.
   * @param risikoPartnerID
   *          ID der Risikoakte.
   * @return ID des gespeicherten Antrags, wird bei neuenb Anträgen aktualisiert.
   * @throws CAMBackendException
   *           falls Serverfehler beim Speichern des Antrags auftritt.
   */
  long saveAntrag( long risikoPartnerID, Antrag antrag,
      Geschaeftsbeziehung geschaeftsbeziehung, boolean decision ) throws LoginException,
      CAMBackendException;

  /**
   * weiterleiten von todos
   * 
   * @param benutzerWiedervorlages
   * @throws LoginException
   * @throws CAMBackendException
   */
  void erzeugeBenutzerWiedervorlage( List<BenutzerWiedervorlage> benutzerWiedervorlages )
      throws LoginException, CAMBackendException;

  /**
   * Löscht eine wiedervorlage
   * 
   * @param element
   * @throws LoginException
   * @throws CAMBackendException
   */
  void deleteWiedervorlage( WiedervorlageListenElement element ) throws LoginException,
      CAMBackendException;

  /**
   * Löscht eine Liste von Wiedervorlagen
   * 
   * @param elemente
   * @throws LoginException
   * @throws CAMBackendException
   */
  void deleteWiedervorlagen( List<WiedervorlageListenElement> elemente ) throws LoginException,
      CAMBackendException;

  /**
   * Legt eine neue Akte mit den gegebenen Stammdaten an. Die Partner-Nummer der neuen Akten wird
   * zurueck gegeben.
   * 
   * @param stammdaten
   *          Stammdaten fuer neue Akte
   * @param justCheck
   *          legt die Akte nicht an sondern Prüft nur die Daten
   * 
   * @return SaveResult bei Erfolg die Partner-ID der neuen Akte
   * @throws CAMBackendException
   *           Bei allen Fehlern
   */
  SaveResult neueAkteAnlegen( Stammdaten stammdaten, boolean justCheck ) throws LoginException,
      CAMBackendException;

  /**
   * Speichert und validier die Gesamtbewertung
   * 
   * @param modifikation
   * @param pageModel
   * @param userID
   * @throws LoginException
   * @throws CAMBackendException
   */
  SaveResult saveGesamtBewertung( ManuelleModifikation modifikation, GeneralPageModel pageModel )
      throws LoginException, CAMBackendException;

  /**
   * Läd die Gesamtbewertung
   * 
   * @param aktenkopf
   * @throws LoginException
   * @throws CAMBackendException
   */
  GesamtBewertung loadGesamtBeweertung( Aktenkopf aktenkopf ) throws LoginException,
      CAMBackendException;

  /**
   * Erzeugt ein jana pdf und speichert es in der Session
   * 
   * @param techID
   * @throws LoginException
   * @throws CAMBackendException
   */
  public boolean requestPdfForBilanz( long techID, long partnerID )
      throws LoginException, CAMBackendException;

  /**
   * Methode zum Konvertieren einer Rechtsform von Extern in CAM. Ruft den
   * {@link LegalFormTranslatorServiceImpl} mit der Option <code>TO_EXTERNAL</code> auf.
   * 
   * @param moduleId
   * @param sourceRechtsformId
   * @return int Die zu Extern gempappte Rechtsform
   */
  Vc2DataContainer transformRechtsformToExternal( int moduleId, int sourceRechtsformId )
      throws LoginException, CAMBackendException;

  /**
   * @param cacheList
   * @throws CAMBackendException
   * @throws LoginException
   */
  void cache( List<Stammdaten> cacheList ) throws CAMBackendException, LoginException;

  /**
   * @param risikoPartnerID
   * @param header
   * @param geschaeftsbeziehung
   * @param decision
   * @throws LoginException
   * @throws CAMBackendException
   */
  long saveAntrag( long risikoPartnerID, AntragsHeader header,
      Geschaeftsbeziehung geschaeftsbeziehung, boolean decision ) throws LoginException,
      CAMBackendException;

  /**
   * Stößt Entscheidung für einen bestimmten Antrag an.
   * 
   * @param risikoPartnerID
   *          ID der Risikoakte.
   * @param antragID
   *          ID des zu entscheidenden Antrags.
   * @throws InternalServerException
   *           falls Serverfehler beim Speichern des Antrags auftritt.
   */
  void entscheideAntrag( long risikoPartnerID, long antragID ) throws LoginException,
      CAMBackendException;

  /**
   * Lehnt einen Kreditantrag ab
   * 
   * @param partnerID
   * @param antrag
   * @throws LoginException
   * @throws CAMBackendException
   */
  Long rejectCredit( long partnerID, AntragsHeader header ) throws LoginException,
      CAMBackendException;

  /**
   * @param sessionID
   * @throws LoginException
   * @throws CAMBackendException
   */
  Login login( String sessionID ) throws LoginException, CAMBackendException;

  /**
   * @param stammdatenBankverbindung
   * @throws LoginException
   * @throws CAMBackendException
   */
  ValidationInfoWeb checkDataForNewBankVerbindung( StammdatenBankverbindung stammdatenBankverbindung )
      throws LoginException, CAMBackendException;

  /**
   * @param blz
   * @param simple
   * @throws LoginException
   * @throws CAMBackendException
   */
  BlzSearchResults searchForBLZ( Bankleitzahl blz, boolean simple ) throws LoginException,
      CAMBackendException;

  FastSearchResult searchFast( FastSearchType searchType, String pattern )
      throws CAMBackendException, LoginException, SearchException;

  /**
   * Lädt für einen Benutzer alle Einstellungen. (Die Einstellungen wurden früher in einer Datei auf
   * dem lokalen Rechner gespeichert. Das Wurde umgestellt, sodass die Einstellungen nun auf der
   * Datenbank gespeichert und von dort geladen werden)
   * 
   * @return Einstellungen
   * @throws LoginException
   * @throws CAMBackendException
   */
  UserSettings loadUserSettings() throws LoginException, CAMBackendException;

  /**
   * 
   * @param userHowChanged
   * @param userSettings
   */
  UserSettings saveUserSettings( UserSettings userSettings ) throws LoginException,
      CAMBackendException;

  GB_ValidationResult addManuelleGesamtbewertung( long partnerId,
      ManuelleModifikation modifikation, GesamtbewertungModelJasperInterface model,
      boolean skipGueltigkeitZuLang ) throws LoginException, CAMBackendException;



  /**
   * @param historyRequest
   * @throws LoginException
   * @throws CAMBackendException
   */
  HistoryEntry<?>[] getAllHistoryEntries( HistoryRequest historyRequest ) throws LoginException,
      CAMBackendException;

  /**
   * @param historyRequest
   * @throws LoginException
   * @throws CAMBackendException
   */
  HistoryEntry<?>[] getAllHistoryEntriesForGB( HistoryRequest historyRequest )
      throws LoginException, CAMBackendException;

  /**
   * 
   * @param partnerID
   * @return Alle Nebenakten zu der übergebenen Partner-ID
   * @throws InternalServerException
   * @throws LoginException
   */
  NebenaktenEinstellungen loadNebenaktenEinstellungen( long partnerID ) throws LoginException,
      CAMBackendException;

  /**
   * 
   * @param einstellungen
   * @throws LoginException
   * @throws CAMBackendException
   */
  SaveResult saveNebenaktenEinstellungen( NebenaktenEinstellungen einstellungen )
      throws LoginException, CAMBackendException;

  /**
   * 
   * @param model
   */
  ValidationInfoWeb validateDeclareAsSubFile( CreditFileModel model,
      List<GeneralPageModelJasperInterface> presenterlist ) throws LoginException,
      CAMBackendException;

  /**
   * 
   */
  void declareAsSubFile( long subfileID, long mainfileID ) throws LoginException,
      CAMBackendException;

  /**
   * 
   * @param model
   * @param presenterList
   */
  ValidationInfoWeb validateDeactivateFile( CreditFileModel model,
      List<GeneralPageModelJasperInterface> presenterList ) throws LoginException,
      CAMBackendException;

  /**
   * 
   */
  void setFileStatus( FileActivationStatus status, long fileID, String kommentar )
      throws LoginException, CAMBackendException;

  /**
   * @param moduleInfo
   * @param creditFile
   * @throws CAMBackendException
   * @throws LoginException
   */
  boolean checkModuleStatus( ModuleInfo moduleInfo, CreditFileInterface creditFile )
      throws LoginException, CAMBackendException;

  MoveAuskunftResult moveAuskunft( MoveAuskunftRequest moveAuskunftRequest ) throws LoginException,
      CAMBackendException;

  void setInfoStatus( int modulID, long mapping,
      InfoActivationStatus status ) throws LoginException, CAMBackendException;

  com.SchumannGmbH.cam.common.data.ValidationInfo checkPreconditionsForInfoStatusChange(
      ModuleInfo moduleInfo,
      CreditFileInterface creditFile ) throws LoginException, CAMBackendException;

  void clearAttachmentDatas( Attachment attachment );

  HistoryEntry<?>[] completeHistoryEntryData( long partnerID, HistoryEntry<?>[] historyEntries,
      int auskunftsnummer, int moduleID ) throws LoginException, CAMBackendException;

  /**
   * Liefert zu dem angegebenen Partner den Status und die Parameter der gerade laufenden Anfrage,
   * sofern diese existiert. Dies kann auch eine Fehlermeldung sein, z.B. "Erste Anfrage
   * fehlgeschlagen, zweiter Versuch läuft."
   * 
   * @param moduleKey
   *          Eindeutiger Schluessel des InfoModuls
   * @param partnerId
   *          Eindeutiger Schluessel des Partners.
   * @param auskunftsNummer
   *          Nummer der Auskunft
   * 
   * @return Die laufende Anfrage dieses Moduls zum Partner.
   * @throws InternalServerException
   *           Bei allen Fehlern
   */
  AbstractAnfrage getLaufendeAnfrage( int moduleKey, long partnerId, int auskunftsNummer )
      throws LoginException, CAMBackendException;

  SupportTabelle[] ladeSupportTabellen( String[] tabellenName ) throws LoginException,
      CAMBackendException;

  /**
   * @throws LoginException
   * @throws CAMBackendException
   */
  Kostenstelle[] loadKostenstellenArrayForUser() throws LoginException, CAMBackendException;

  /**
   * @param modulID
   * @param auskunftsID
   * @throws LoginException
   * @throws CAMBackendException
   */
  MappingInfo[] getAllMappings( int modulID, long auskunftsID ) throws LoginException,
      CAMBackendException;

  SerializableObject getAktuellAuskunft( int moduleKey, long partnerID, int auskunftsnummer )
      throws LoginException, CAMBackendException;

  SerializableObject[] getHistorischeAuskuenfte( int modulID, long partnerID, int maxAnzahl,
      int auskunftsnummer ) throws LoginException, CAMBackendException;

  /**
   * @return
   */
  String getVersionInfos();

  /**
   * Setzt ein neues Passwort
   * 
   * @param userrname
   * @param passwordOld
   * @param passwordNew
   * @param localeString
   * @return
   * @throws CAMBackendException
   */
  ValidationInfoWeb changePassword( String userrname, String passwordOld, String passwordNew,
      String localeString ) throws CAMBackendException;

  LoginResult getLoginInfo( long userID ) throws LoginException, CAMBackendException;

  void logoutClient( long clientID[] ) throws LoginException, CAMBackendException;


  /**
   * Laedt alle verfuegbaren 'Funktion'-Objekte.
   *
   * @return Funktion[] ein Array aller 'Funktion'-Objekte
   * derjenigen Mandanten, zu denen der ausführende Benutzer gehört
   * @throws LoginException
   * @throws CAMBackendException
   */
  Funktion[] loadFunktionArray() throws LoginException, CAMBackendException;  


  /**
   * @return
   */
  LoginConfig getLoginConfig();

  FormularEntryHistoryWrapper getFormularEntryHistory(
      FormularEntryHistoryRequest formularHistoryRequest ) throws LoginException, CAMBackendException;

  SupportTabelle reloadSupportTabelle( String tabellenName ) throws LoginException;
}


Do you have a hint for us? 

In which event do you use your SyncronousRequests ? Are they working in onClose() and in onBeforeClosing() ? 

Thanks for your support!

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment