Critical
EAServer is no longer supported
Description
EAServer is no longer supported since PowerBuilder 2017. The SSLServiceProvider object provides SSL/TLS services in older PowerBuilder versions. It may not support modern security protocols, making it unsuitable for contemporary secure communications. The CORBACurrent object is part of the CORBA standard for distributed objects. CORBA is outdated and not widely used in modern application architectures. The CORBAObject represents remote objects in a CORBA system. Its use is discouraged due to performance issues and obsolescence. The TransactionServer object handles transaction management in distributed applications. Modern frameworks provide more robust and scalable solutions.
Key Benefits
- Ensures Better Security:Switching to updated libraries ensures better security, compatibility with modern protocols, and compliance with standards like TLS 1.3.
- Improves Scalability:Replacing CORBACurrent with modern communication methods like REST APIs improves scalability, maintainability, and performance.
- Improves Interoperability:Using contemporary SOA or microservice patterns instead of CORBAObject enhances interoperability and reduces technical debt.
- Increased Reliability:Adopting modern transaction management systems offers increased reliability, better integration options, and improved scalability.
Non-compliant Code Example
global function string GetTransactionServerFuncObj (integer id); Integer rc OleObject lole TransactionServer lts //Non compliant code Integer li_rc long ll_rv lole = create OleObjectrc = this.GetContextService("TransactionServer", lts) IF rc <> 1 THEN return "Error from GetContextService " + String (rc) END IF // PBCOM is the ProgID, n_genapp is the class namerc = lts.CreateInstance(lole, "PBCOM.n_genapp") IF rc <> 0 THEN return "Error from CreateInstance " + String (rc) END IF IF lts.IsTransactionAborted() = FALSE and lts.IsInTransaction = TRUE THEN //Non compliant code ll_rv = ids_datastore.Update() IF ll_rv = 1 THEN lts.EnableCommit() ELSE lts.DisableCommit() END IF END IF li_rc = this.GetContextService("TransactionServer", lts) IF li_rc <> 1 THEN // handle the error return "Error from CreateInstance " + String (li_rc) END IF ll_rv = ids_datastore.Update() IF ll_rv = 1 THEN lts.EnableCommit() ELSE lts.DisableCommit() END IF return productName_string end function
global function string GetConnectionFuncObj (integer id); SSLServiceProvider sp //Non compliant code // set QOP getcontextservice( "SSLServiceProvider", sp ) sp.setglobalproperty( "QOP", "sybpks_simple" ) //Non compliant code // set PB callback handler sp.setglobalproperty( "CallbackImpl", "uo_sslcallback_handler" ) //Non compliant code // connect to the server connection cxn //Non compliant code cxn.userid = "jagadmin" cxn.password = "sybase" cxn.driver = "jaguar" cxn.application = "dbgpkg" cxn.options = "ORBLogFile='d:\PBJagClient.Log'" cxn.location = "iiops://localhost:9001" TRY l_rc = cxn.ConnectToServer() //Non compliant code CATCH (userabortedexception uae) MessageBox("UserAbortedException Caught", & "ConnectToServer caught: " + uae.getMessage() ) l_rc = 999 CATCH ( CORBASystemException cse ) MessageBox("CORBASystemException Caught", & "ConnectToServer caught: " + cse.getMessage() ) l_rc = 998 CATCH ( RuntimeError re ) MessageBox("RuntimeError Exception Caught", & "ConnectToServer caught: " + re.getMessage() ) l_rc = 997 CATCH ( Exception ex ) MessageBox("Exception Caught", & "ConnectToServer caught: " + ex.getMessage() ) l_rc = 996 END TRY IF l_rc <> 0 THEN MessageBox("Error", "Connection Failed - code: " & + string(l_rc) ) MessageBox("Error Info", "ErrorCode= " + & string(cxn.ErrCode) + "~nErrText= " + & cxn.ErrText) ELSE MessageBox("OK", "Connection Established") END IF Return productName_string end function