📄 jco$server.java
字号:
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 + -