⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jco$server.java

📁 SAP这个系统的一个转换器
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                JCO.fireTrace(1, "[JAV-LAYER] JCO.Server.start() on [" + getConnectionHandle() + "]                     [leave]");
        }
    }

    public void stop()
    {
        try
        {
            if(JCO.trace_level > 0)
                JCO.fireTrace(1, "[JAV-LAYER] JCO.Server.stop() on [" + getConnectionHandle() + "]                     [enter]");
            Thread thread = getThread();
            if(thread != null)
                synchronized(m_semaphore)
                {
                    m_thread = null;
                    super.state = (byte)(super.state & -9);
                    m_semaphore.notifyAll();
                }
        }
        finally
        {
            if(JCO.trace_level > 0)
                JCO.fireTrace(1, "[JAV-LAYER] JCO.Server.stop() on [" + getConnectionHandle() + "]                     [leave]");
        }
    }

    public void suspend()
    {
        try
        {
            if(JCO.trace_level > 0)
                JCO.fireTrace(1, "[JAV-LAYER] JCO.Server.suspend() on [" + getConnectionHandle() + "]                     [enter]");
            if(getThread() == null || !getThread().isAlive())
                return;
            synchronized(m_semaphore)
            {
                super.state = (byte)(super.state & -9 | 0x40);
            }
        }
        finally
        {
            if(JCO.trace_level > 0)
                JCO.fireTrace(1, "[JAV-LAYER] JCO.Server.suspend() on [" + getConnectionHandle() + "]                     [leave]");
        }
    }

    public void run()
    {
        setState((byte)2);
        for(Thread current_thread = Thread.currentThread(); getThread() == current_thread;)
        {
            if(m_startup_delay > 0)
            {
                synchronized(m_semaphore)
                {
                    try
                    {
                        m_semaphore.wait(m_startup_delay * 1000);
                    }
                    catch(InterruptedException ex) { }
                }
                if(getThread() != current_thread)
                    break;
            }
            listen();
            synchronized(m_semaphore)
            {
                if((super.state & 0x40) != 0)
                {
                    JCO.fireServerStateChangeOccurred(this, super.state & 0xffffffbf, super.state);
                    while((super.state & 0x40) != 0 && getThread() == current_thread) 
                        try
                        {
                            m_semaphore.wait();
                        }
                        catch(InterruptedException ex) { }
                    JCO.fireServerStateChangeOccurred(this, super.state | 0x40, super.state);
                }
            }
        }

        setState((byte)1);
    }

    public boolean isAlive()
    {
        return m_middleware.isAlive(this);
    }

    protected void listen()
    {
        if(isValid())
            return;
        String lastErrorMsg = null;
        super.last_active_timestamp = System.currentTimeMillis();
        m_middleware.initialize(this, super.properties);
        setState((byte)2);
        try
        {
            m_middleware.listen(this, super.conn_params);
            m_startup_delay = 0;
        }
        catch(on ex)
        {
            if(ex.getGroup() == 129)
            {
                m_startup_delay = m_startup_delay != 0 ? m_startup_delay * 2 : 1;
                int maxStartupDelay = getMaxStartupDelay();
                if(m_startup_delay > maxStartupDelay)
                    m_startup_delay = maxStartupDelay;
                ex = new on(ex.getGroup(), ex.getKey(), "Server startup failed at " + new Date() + "." + JCO.CRLF + "This is caused by either a) erroneous server settings, b) the backend system has been shutdown, " + "c) network problems." + (m_startup_delay != 0 ? " Will try next startup in " + m_startup_delay + " seconds." : "") + JCO.CRLF + ex.getMessage());
            } else
            {
                m_startup_delay = 0;
            }
            JCO.fireServerExceptionOccurred(this, ex);
            lastErrorMsg = ex.getKey() + ": " + ex.getMessage();
        }
        catch(Exception ex)
        {
            m_startup_delay = 0;
            JCO.fireServerExceptionOccurred(this, ex);
            lastErrorMsg = ex.toString();
        }
        catch(Error err)
        {
            m_startup_delay = 0;
            JCO.fireServerErrorOccurred(this, err);
            lastErrorMsg = err.toString();
            throw err;
        }
        finally
        {
            setState((byte)(super.state & -9));
            if(lastErrorMsg != null && isAlive())
                try
                {
                    abort(lastErrorMsg);
                }
                catch(Throwable t)
                {
                    if(JCO.trace_level == 1)
                        JCO.fireTrace(1, "[JAV-LAYER] Error during sending the error message [" + lastErrorMsg + "] to backend: " + t.toString());
                }
            else
                disconnect();
        }
    }

    protected n getFunction(String function_name)
    {
        IFunctionTemplate ft = null;
        ft = m_repository.getFunctionTemplate(function_name);
        return ft == null ? null : new n(ft);
    }

    protected boolean checkAuthorization(String function_name, int authorization_mode, String authorization_partner, byte authorization_key[])
    {
        System.out.println("checkSNCAuthorization: " + JCO.CRLF + "Function:    " + function_name + JCO.CRLF + "SNC Name:    " + authorization_partner + JCO.CRLF + "SNC ACL Key: " + com.sap.mw.jco.util.Codecs$Hex.encode(authorization_key) + JCO.CRLF);
        return true;
    }

    private void traceBeforeDispatchRequest( request, e response)
    {
        StringBuffer buf = (new StringBuffer("[JAV-LAYER] dispatchRequest() before handleRequest(")).append(request != null ? request.getName() : "null").append(", ").append(response != null ? response.getName() : "null").append(")");
        boolean trace_data = false;
        byte unicodeType = (byte)((request == null ? 0 : request.getUnicodeType()) | (response == null ? 0 : response.getUnicodeType()));
        if(unicodeType == 3)
        {
            buf.append(" WARNING: mixed unicode/non-unicode metadata");
            trace_data = true;
        } else
        if(unicodeType == 1 && super.attributes.partner_codepage.charAt(0) == '4')
        {
            buf.append(" WARNING: non-unicode metadata is used for communication with a unicode backend");
            trace_data = true;
        } else
        if(unicodeType == 2 && super.attributes.partner_codepage.charAt(0) != '4')
        {
            buf.append(" WARNING: unicode metadata is used for communication with a non-unicode backend");
            trace_data = true;
        }
        if(JCO.trace_level > 5 || trace_data)
        {
            buf.append(JCO.CRLF);
            buf.append("Request: ");
            if(request != null)
                buf.append(JCO.CRLF).append(request.dumpContent());
            else
                buf.append("null");
            buf.append(JCO.CRLF);
            if(trace_data)
            {
                buf.append(JCO.CRLF);
                buf.append("Response: ");
                if(response != null)
                    buf.append(JCO.CRLF).append(response.dumpContent());
                else
                    buf.append("null");
                buf.append(JCO.CRLF);
            }
        }
        JCO.fireTrace(JCO.trace_level, buf.toString());
    }

    private void traceAfterDispatchRequest( request, e response)
    {
        StringBuffer buf = (new StringBuffer("[JAV-LAYER] dispatchRequest() after handleRequest(")).append(request != null ? request.getName() : "null").append(", ").append(response != null ? response.getName() : "null").append(")");
        if(JCO.trace_level > 5)
        {
            buf.append(JCO.CRLF);
            buf.append("Response: ");
            if(response != null)
                buf.append(JCO.CRLF).append(response.dumpContent());
            else
                buf.append("null");
            buf.append(JCO.CRLF);
        }
        JCO.fireTrace(JCO.trace_level, buf.toString());
    }

    private void traceBeforeDispatchRequest(n function)
    {
        StringBuffer buf = (new StringBuffer("[JAV-LAYER] dispatchRequest() before handleRequest(")).append(function.getName()).append(") on handle [").append(getConnectionHandle()).append("]");
        boolean trace_data = false;
        byte unicodeType = (byte)((function.getImportParameterList() == null ? 0 : function.getImportParameterList().getUnicodeType()) | (function.getExportParameterList() == null ? 0 : function.getExportParameterList().getUnicodeType()) | (function.getTableParameterList() == null ? 0 : function.getTableParameterList().getUnicodeType()));
        if(unicodeType == 3)
        {
            JCO.fireTrace(1, "[JAV-LAYER] WARNING: mixed unicode/non-unicode metadata");
            trace_data = true;
        } else
        if(unicodeType == 1 && super.attributes.partner_codepage.charAt(0) == '4')
        {
            JCO.fireTrace(1, "[JAV-LAYER] WARNING: non-unicode metadata is used for communication with a unicode backend");
            trace_data = true;
        } else
        if(unicodeType == 2 && super.attributes.partner_codepage.charAt(0) != '4')
        {
            JCO.fireTrace(1, "[JAV-LAYER] WARNING: unicode metadata is used for communication with a non-unicode backend");
            trace_data = true;
        }
        if(JCO.trace_level > 5 || trace_data)
        {
            buf.append(JCO.CRLF);
            buf.append("Function ").append(function.getName());
            buf.append(JCO.CRLF);
            buf.append("Input: ");
            if(function.getImportParameterList() != null)
                buf.append(JCO.CRLF).append(function.getImportParameterList().dumpContent());
            else
                buf.append("null");
            buf.append(JCO.CRLF);
            if(trace_data)
            {
                buf.append("Output: ");
                if(function.getExportParameterList() != null)
                    buf.append(JCO.CRLF).append(function.getExportParameterList().dumpContent());
                else
                    buf.append("null");
                buf.append(JCO.CRLF);
            }
            buf.append("Tables: ");
            if(function.getTableParameterList() != null)
                buf.append(JCO.CRLF).append(function.getTableParameterList().dumpContent());
            else
                buf.append("null");
            buf.append(JCO.CRLF);
        }
        JCO.fireTrace(JCO.trace_level, buf.toString());
    }

    private void traceAfterDispatchRequest(n function)
    {
        StringBuffer buf = (new StringBuffer("[JAV-LAYER] dispatchRequest() after handleRequest(")).append(function.getName()).append(") on handle [").append(getConnectionHandle()).append("]");
        if(JCO.trace_level > 5)
        {
            buf.append(JCO.CRLF);
            buf.append("Function ").append(function.getName());
            buf.append(JCO.CRLF);
            buf.append("Output: ");
            if(function.getExportParameterList() != null)
                buf.append(JCO.CRLF).append(function.getExportParameterList().dumpContent());
            else
                buf.append("null");
            buf.append(JCO.CRLF);
            buf.append("Tables: ");
            if(function.getTableParameterList() != null)
                buf.append(JCO.CRLF).append(function.getTableParameterList().dumpContent());
            else
                buf.append("null");
            buf.append(JCO.CRLF);
        }
        JCO.fireTrace(JCO.trace_level, buf.toString());

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -