Search in sources :

Example 1 with Server

use of org.compiere.interfaces.Server in project adempiere by adempiere.

the class ProcessCtl method startDBProcess.

//  startProcess
/**************************************************************************
	 *  Start Database Process
	 *  @param ProcedureName PL/SQL procedure name
	 *  @return true if success
	 */
private boolean startDBProcess(String ProcedureName) {
    //  execute on this thread/connection
    log.fine(ProcedureName + "(" + processInstance.getAD_PInstance_ID() + ")");
    boolean started = false;
    if (isServerProcess) {
        Server server = CConnection.get().getServer();
        try {
            if (server != null) {
                //	See ServerBean
                processInstance = server.dbProcess(processInstance, ProcedureName);
                log.finest("server => " + processInstance);
                started = true;
            }
        } catch (UndeclaredThrowableException ex) {
            Throwable cause = ex.getCause();
            if (cause != null) {
                if (cause instanceof InvalidClassException)
                    log.log(Level.SEVERE, "Version Server <> Client: " + cause.toString() + " - " + processInstance, ex);
                else
                    log.log(Level.SEVERE, "AppsServer error(1b): " + cause.toString() + " - " + processInstance, ex);
            } else {
                log.log(Level.SEVERE, " AppsServer error(1) - " + processInstance, ex);
                cause = ex;
            }
            processInstance.setSummary(Msg.getMsg(Env.getCtx(), "ProcessRunError") + " " + cause.getLocalizedMessage());
            processInstance.setError(true);
            return false;
        } catch (Exception ex) {
            Throwable cause = ex.getCause();
            if (cause == null)
                cause = ex;
            log.log(Level.SEVERE, "AppsServer error - " + processInstance, cause);
            processInstance.setSummary(Msg.getMsg(Env.getCtx(), "ProcessRunError") + " " + cause.getLocalizedMessage());
            processInstance.setError(true);
            return false;
        }
    }
    //try locally
    if (!started) {
        if (processInstance.isManagedTransaction())
            return ProcessUtil.startDatabaseProcedure(processInstance, ProcedureName, m_trx);
        else
            return ProcessUtil.startDatabaseProcedure(processInstance, ProcedureName, m_trx, processInstance.isManagedTransaction());
    }
    //	log.fine(Log.l4_Data, "ProcessCtl.startProcess - done");
    return true;
}
Also used : Server(org.compiere.interfaces.Server) UndeclaredThrowableException(java.lang.reflect.UndeclaredThrowableException) InvalidClassException(java.io.InvalidClassException) InvalidClassException(java.io.InvalidClassException) UndeclaredThrowableException(java.lang.reflect.UndeclaredThrowableException)

Example 2 with Server

use of org.compiere.interfaces.Server in project adempiere by adempiere.

the class DocumentEngine method postImmediate.

/**
	 *  Post Immediate
	 *
	 *	@param	ctx Client Context
	 *  @param  AD_Client_ID    Client ID of Document
	 *  @param  AD_Table_ID     Table ID of Document
	 *  @param  Record_ID       Record ID of this document
	 *  @param  force           force posting
	 *  @param  trxName			ignore, retained for backward compatibility
	 *  @return null, if success or error message
	 */
public static String postImmediate(Properties ctx, int AD_Client_ID, int AD_Table_ID, int Record_ID, boolean force, String trxName) {
    // Ensure the table has Posted column / i.e. GL_JournalBatch can be completed but not posted
    if (MColumn.getColumn_ID(MTable.getTableName(ctx, AD_Table_ID), "Posted") <= 0)
        return null;
    String error = null;
    if (MClient.isClientAccounting()) {
        log.info("Table=" + AD_Table_ID + ", Record=" + Record_ID);
        MAcctSchema[] ass = MAcctSchema.getClientAcctSchema(ctx, AD_Client_ID);
        error = Doc.postImmediate(ass, AD_Table_ID, Record_ID, force, trxName);
        return error;
    }
    //  try to get from Server when enabled
    if (CConnection.get().isAppsServerOK(true)) {
        log.config("trying server");
        try {
            Server server = CConnection.get().getServer();
            if (server != null) {
                Properties p = Env.getRemoteCallCtx(Env.getCtx());
                error = server.postImmediate(p, AD_Client_ID, AD_Table_ID, Record_ID, force, // don't pass transaction to server
                null);
                log.config("from Server: " + error == null ? "OK" : error);
            } else {
                error = "NoAppsServer";
            }
        } catch (Exception e) {
            log.log(Level.WARNING, "(RE)", e);
            error = e.getMessage();
        }
    }
    return error;
}
Also used : MAcctSchema(org.compiere.model.MAcctSchema) Server(org.compiere.interfaces.Server) Properties(java.util.Properties) SQLException(java.sql.SQLException) AdempiereException(org.adempiere.exceptions.AdempiereException)

Example 3 with Server

use of org.compiere.interfaces.Server in project adempiere by adempiere.

the class ReplicationLocal method connectRemote.

//	doIt
/**
	 * 	Connect to Remote Server
	 *	@throws java.lang.Exception
	 */
private void connectRemote() throws Exception {
    //	Replication Info
    m_replication = new MReplication(getCtx(), getRecord_ID(), get_TrxName());
    //
    String AppsHost = m_replication.getHostAddress();
    int AppsPort = m_replication.getHostPort();
    CConnection connection = new CConnection(AppsHost);
    connection.setAppsPort(AppsPort);
    log.info(AppsHost + ":" + AppsPort);
    try {
        Server server = connection.getServer();
        //	log.fine("- ServerHome: " + serverHome);
        if (server == null)
            throw new Exception("NoServer");
        m_serverRemote = server;
    //	log.fine("- Server: " + m_serverRemote);
    //	log.fine("- Remote Status = " + m_serverRemote.getStatus());
    } catch (Exception ex) {
        log.log(Level.SEVERE, "connectRemote", ex);
        throw new Exception(ex);
    }
}
Also used : CConnection(org.compiere.db.CConnection) Server(org.compiere.interfaces.Server) MReplication(org.compiere.model.MReplication) SQLException(java.sql.SQLException)

Example 4 with Server

use of org.compiere.interfaces.Server in project adempiere by adempiere.

the class StatusInfo method doGet.

/**
	 * 	Get
	 *	@param request
	 *	@param response
	 *	@throws ServletException
	 *	@throws IOException
	 */
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType(CONTENT_TYPE);
    PrintWriter out = response.getWriter();
    out.println("<html>");
    out.println("<head><title>Status Info</title></head>");
    out.println("<body>");
    InitialContext context = null;
    try {
        context = new InitialContext();
    } catch (Exception ex) {
        out.println("<p><b>" + ex + "</b></p>");
    }
    try {
        Status status = (Status) context.lookup(Status.JNDI_NAME);
        out.println("<p>" + status.getStatus() + "</p>");
    } catch (Exception ex) {
        out.println("<p><b>" + ex + "</b></p>");
    }
    try {
        Server server = (Server) context.lookup(Server.JNDI_NAME);
        out.println("<p>" + server.getStatus() + "</p>");
    } catch (Exception ex) {
        out.println("<p><b>" + ex + "</b></p>");
    }
    try {
        out.println("<h2>-- /</h2>");
        NamingEnumeration ne = context.list("/");
        while (ne.hasMore()) out.println("<br>   " + ne.nextElement());
        out.println("<h2>-- java</h2>");
        ne = context.list("java:");
        while (ne.hasMore()) out.println("<br>   " + ne.nextElement());
        out.println("<h2>-- ejb</h2>");
        ne = context.list("ejb");
        while (ne.hasMore()) out.println("<br>   " + ne.nextElement());
        //
        out.println("<h2>-- DS</h2>");
        DataSource ds = (DataSource) context.lookup("java:/OracleDS");
        out.println("<br>  DataSource " + ds.getClass().getName() + " LoginTimeout=" + ds.getLoginTimeout());
        Connection con = ds.getConnection("adempiere", "adempiere");
        out.println("<br>  Connection ");
        getServletContext().log("Connection closed=" + con.isClosed());
        DatabaseMetaData dbmd = con.getMetaData();
        getServletContext().log("DB " + dbmd.getDatabaseProductName());
        getServletContext().log("DB V " + dbmd.getDatabaseProductVersion());
        getServletContext().log("Driver " + dbmd.getDriverName());
        getServletContext().log("Driver V " + dbmd.getDriverVersion());
        getServletContext().log("JDBC " + dbmd.getJDBCMajorVersion());
        getServletContext().log("JDBC mV " + dbmd.getJDBCMinorVersion());
        getServletContext().log("User " + dbmd.getUserName());
        getServletContext().log("ANSI 92 " + dbmd.supportsANSI92FullSQL());
        getServletContext().log("Connection Alter Table ADD" + dbmd.supportsAlterTableWithAddColumn());
        getServletContext().log("Connection Alter Table DROP " + dbmd.supportsAlterTableWithDropColumn());
        getServletContext().log("Connection DDL&DML " + dbmd.supportsDataDefinitionAndDataManipulationTransactions());
        getServletContext().log("Connection CatalogsIn DML " + dbmd.supportsCatalogsInDataManipulation());
        getServletContext().log("Connection Schema In DML " + dbmd.supportsSchemasInDataManipulation());
        con.close();
    } catch (Exception e) {
        out.println("<p><b>" + e + "</b></p>");
    }
    out.println("</body></html>");
}
Also used : Status(org.compiere.interfaces.Status) Server(org.compiere.interfaces.Server) Connection(java.sql.Connection) NamingEnumeration(javax.naming.NamingEnumeration) DatabaseMetaData(java.sql.DatabaseMetaData) InitialContext(javax.naming.InitialContext) ServletException(javax.servlet.ServletException) IOException(java.io.IOException) PrintWriter(java.io.PrintWriter) DataSource(javax.sql.DataSource)

Example 5 with Server

use of org.compiere.interfaces.Server in project adempiere by adempiere.

the class ServerProcessCtl method startProcess.

//  startWorkflow
/**************************************************************************
	 *  Start Java Process Class.
	 *      instanciate the class implementing the interface ProcessCall.
	 *  The class can be a Server/Client class (when in Package
	 *  org adempiere.process or org.compiere.model) or a client only class
	 *  (e.g. in org.compiere.report)
	 *
	 *  @return     true if success
	 */
protected boolean startProcess() {
    log.fine(processInfo.toString());
    boolean started = false;
    //hengsin, bug [ 1633995 ]
    boolean clientOnly = false;
    if (!processInfo.getClassName().toLowerCase().startsWith(MRule.SCRIPT_PREFIX)) {
        try {
            Class<?> processClass = Class.forName(processInfo.getClassName());
            if (ClientProcess.class.isAssignableFrom(processClass))
                clientOnly = true;
        } catch (Exception e) {
        }
    }
    if (isServerProcess && !clientOnly) {
        Server server = CConnection.get().getServer();
        try {
            if (server != null) {
                //	See ServerBean
                processInfo = server.process(Env.getRemoteCallCtx(Env.getCtx()), processInfo);
                log.finest("server => " + processInfo);
                started = true;
            }
        } catch (UndeclaredThrowableException ex) {
            Throwable cause = ex.getCause();
            if (cause != null) {
                if (cause instanceof InvalidClassException)
                    log.log(Level.SEVERE, "Version Server <> Client: " + cause.toString() + " - " + processInfo, ex);
                else
                    log.log(Level.SEVERE, "AppsServer error(1b): " + cause.toString() + " - " + processInfo, ex);
            } else
                log.log(Level.SEVERE, " AppsServer error(1) - " + processInfo, ex);
            started = false;
        } catch (Exception ex) {
            Throwable cause = ex.getCause();
            if (cause == null)
                cause = ex;
            log.log(Level.SEVERE, "AppsServer error - " + processInfo, cause);
            started = false;
        }
    }
    //	Run locally
    if (!started && (!isServerProcess || clientOnly)) {
        if (processInfo.getClassName().toLowerCase().startsWith(MRule.SCRIPT_PREFIX)) {
            return ProcessUtil.startScriptProcess(Env.getCtx(), processInfo, trx);
        } else {
            if (processInfo.isManagedTransaction())
                return ProcessUtil.startJavaProcess(Env.getCtx(), processInfo, trx);
            else
                return ProcessUtil.startJavaProcess(Env.getCtx(), processInfo, trx, processInfo.isManagedTransaction());
        }
    }
    return !processInfo.isError();
}
Also used : Server(org.compiere.interfaces.Server) UndeclaredThrowableException(java.lang.reflect.UndeclaredThrowableException) InvalidClassException(java.io.InvalidClassException) UndeclaredThrowableException(java.lang.reflect.UndeclaredThrowableException) InvalidClassException(java.io.InvalidClassException)

Aggregations

Server (org.compiere.interfaces.Server)10 InvalidClassException (java.io.InvalidClassException)6 UndeclaredThrowableException (java.lang.reflect.UndeclaredThrowableException)6 SQLException (java.sql.SQLException)2 MWFProcess (org.compiere.wf.MWFProcess)2 IOException (java.io.IOException)1 PrintWriter (java.io.PrintWriter)1 Connection (java.sql.Connection)1 DatabaseMetaData (java.sql.DatabaseMetaData)1 Properties (java.util.Properties)1 InitialContext (javax.naming.InitialContext)1 NamingEnumeration (javax.naming.NamingEnumeration)1 ServletException (javax.servlet.ServletException)1 DataSource (javax.sql.DataSource)1 AdempiereException (org.adempiere.exceptions.AdempiereException)1 CConnection (org.compiere.db.CConnection)1 Status (org.compiere.interfaces.Status)1 MAcctSchema (org.compiere.model.MAcctSchema)1 MReplication (org.compiere.model.MReplication)1 EMail (org.compiere.util.EMail)1