Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Вопросик из области Web-Programmierung, Java

5645  1 2 3 4 5 6 7 8 9 все
v0id* патриот04.09.15 22:23
v0id*
NEW 04.09.15 22:23 
в ответ loopback 04.09.15 22:17
В ответ на:
Запусти тспдамп/вайршарк

Я и слов-то таких не знаю.
Как это сделать и в чем фишка ?
Эй, фуфло, готовься к шмону, ты на стрём поставлен у ворот... Присоединяйтесь: https://t.me/kudy_vadis
#21 
loopback прохожий04.09.15 22:30
NEW 04.09.15 22:30 
в ответ v0id* 04.09.15 22:23
оба выполняют одну и ту же функцию, сервер, подозреваю- линукс машина, клиент- виндоус
потому и разные названия
обе программы- пакет снифферы, позволяют записать и визуализировать процесс обмена пакетами между клиентом и сервером
я подозреваю, что ты там не один единственный воин, кто этим занимается, есть и сетевые админы.
они могут по просьбе стартануть одновременно вышеупомянутые программы, записать дампы и помочь эти дампы проанализировать
дампы покажут, как идет обмен пакетами. что делает клиент, что в ответ делает сервер, какое окно явлется чьим чилдом и кто является чьим парентом.
в таком аксепте..
#22 
MrSanders старожил04.09.15 22:43
NEW 04.09.15 22:43 
в ответ v0id* 04.09.15 17:43
В ответ на:
А как это можно предотвратить?

Настройками браузера. Читай - никак. Ещё раз, копая в эту сторону вы решения не найдёте.
В ответ на:
Важное уточнение: для первого окна открывается Java Console, для второго тоже открывается своя, вторая Java Console.
В третьем окне своя консоль уже не открывается.
Вопрос: а к чему привязана консоль?

Хех, похоже я угадал. Обычно консоль запускается для запущенной JVM
В ответ на:
Два браузера - это два разных типа браузера или просто две разных инстанции?

Просто два процесса одного браузера.
В ответ на:
то это будет все та же сессия, видно по логам

В ответ на:
Сессия создается ДО логина

Вы меня запутали. Что вы называете сессией? HttpSession или что-то своё, что вы контролируетее сами?
В ответ на:
Схема такая: стартует сервлет (StartsServer)

Когда он стартует?
При запуске веб-сервера или при вызове doGet() или doPost()?
В ответ на:
создавать флаг, что один апплет уже существует и второй нельзя, не в CurrentContext, а в самом классе

Нет разницы
В ответ на:
создаю этот флаг в самом сервлете (StartsServer)

А вот тут вы что-то делаете неправильно. У сервлета (у вас) должна быть одна копия (вы же не запускаете его на нескольких машинах за LoadBalancer-ом)
Покажите код сервлета
#23 
MrSanders старожил04.09.15 22:53
NEW 04.09.15 22:53 
в ответ loopback 04.09.15 22:30
В ответ на:
что делает клиент, что в ответ делает сервер, какое окно явлется чьим чилдом и кто является чьим парентом.
в таком аксепте

Не имеет смысла. Ну увидит ТС что от двух разных JVM пакеты идут. А может и не увидеть. Можно и внутри одной машины апплеты изолировать. Что это ему даст? Ничего нового. Реализованая логика - контроль на стороне клиента - неверна, работать может только случайно.
#24 
loopback прохожий04.09.15 23:01
NEW 04.09.15 23:01 
в ответ MrSanders 04.09.15 22:53
я не силен в приложениях, но, как правило, показываются пакеты, последовательность, что является ответом на что.
может быть, что-то можно будет и увидеть. как-то же они разрабатывали это приложение? при разработке же использовался какой-то дебаггер?
в моей работе тспдамп помогает здорово, по-крайней мере, нам удается без проблем отделять нетворк релейтед ишью от не нетворк релейтед ван.
хорошо удается различить траффик, приходящий от разных тиров, и уходящий к разным тирам- сиквел, аппликейшн и прочее, и видно, что является причиной, а что- следствием.
думаю, что если такая ситуация- то не будет проблемы попробовать- костет зовизо никс.
#25 
MrSanders старожил04.09.15 23:10
NEW 04.09.15 23:10 
в ответ loopback 04.09.15 23:01
В ответ на:
костет зовизо никс.

Ну да, по деньгам не стоит. По времени - с wireshark-ом разобраться не так просто. Если есть время и желание, то, конечно, не помешает. Но для данной конкретной ошибки и не даст ничего. Чесслово. Потому как она вообще без привязки к сети происходит. ТС пытается в апплете определить бегает ли вторая копия такого же апплета на этой же машине. А это возможно только если позволить апплету, вылезать из своей песочницы, например, менять переменные среды. Или писать в файл. "Средствами системы невозможно определить покоится ли система или движется равномерно и прямолинейно" (с)
#26 
v0id* патриот04.09.15 23:13
v0id*
NEW 04.09.15 23:13 
в ответ loopback 04.09.15 22:30
В ответ на:
сервер, подозреваю- линукс машина, клиент- виндоус

Tomcat Apache на Солярке (Юниксе, даже хуже того - AIX).
В ответ на:
обе программы- пакет снифферы, позволяют записать и визуализировать процесс обмена пакетами между клиентом и сервером
я подозреваю, что ты там не один единственный воин, кто этим занимается, есть и сетевые админы.
они могут по просьбе стартануть одновременно вышеупомянутые программы, записать дампы и помочь эти дампы проанализировать
дампы покажут, как идет обмен пакетами. что делает клиент, что в ответ делает сервер, какое окно явлется чьим чилдом и кто является чьим парентом.
в таком аксепте..

Понял, спасибо. Хрен знает, я с админами не общаюсь, они и сидят-то далеко.
Эй, фуфло, готовься к шмону, ты на стрём поставлен у ворот... Присоединяйтесь: https://t.me/kudy_vadis
#27 
loopback прохожий04.09.15 23:25
NEW 04.09.15 23:25 
в ответ MrSanders 04.09.15 23:10
В ответ на:
В ответ на:
--------------------------------------------------------------------------------
костет зовизо никс.
Ну да, по деньгам не стоит. По времени - с wireshark-ом разобраться не так просто. Если есть время и желание, то, конечно, не помешает. Но для данной конкретной ошибки и не даст ничего. Чесслово.
ситуация немного другая. топикстартеру на продакшне в нормальной фирме не дадут ничего запустить на сервере, не то, чтобы руки оторвут, просто доступа у него нет к байнари файлам на сервере, только в мире апача или томката, и то, только под определенным аккаунтом.
чтобы запустить тспдамп нужно будет открывать тикет у сетевиков/админов этого соляриса, а цветы и конфеты админы, как известно, не пьют.
зато, эти же самые админы помогут и получившиеся дампы проанализировать.
В ответ на:
Потому как она вообще без привязки к сети происходит. ТС пытается в апплете определить бегает ли вторая копия такого же апплета на этой же машине. А это возможно только если позволить апплету, вылезать из своей песочницы, например, менять переменные среды. Или писать в файл. "Средствами системы невозможно определить покоится ли система или движется равномерно и прямолинейно" (с)
такое тоже, может быть, но я не знаю. тогда надо включать дебаг и читать вербос логи сервера. если они есть.
#28 
v0id* патриот04.09.15 23:36
v0id*
NEW 04.09.15 23:36 
в ответ MrSanders 04.09.15 22:43
В ответ на:
А как это можно предотвратить?
Настройками браузера. Читай - никак. Ещё раз, копая в эту сторону вы решения не найдёте.

Решения, конечно, нет, я лишь хотел удостовериться, что дело именно в двух Ява-машинах.
А пока я и причины не знаю, трудно что-то лечить.
В ответ на:
Вы меня запутали. Что вы называете сессией? HttpSession или что-то своё, что вы контролируетее сами?

Сессия - это.. сессия!
В принципе можно вообще работать, не залогиниваясь (при отключенной секьюрити), что мы часто и делаем. Вы же не будете говорить, что в этом случае нет никакой сессии?
Ну, вот кусочек лога:
01.09.2015 12:27:23 DCC_4 (25) I: >>>> Start of external request (getClientParamForMandant) - id (25)
01.09.2015 12:27:23 DCC_4 (25) I: prepareForRequest <25>
01.09.2015 12:27:23 DCC_4 (25) I: request for access key: 540C407B5B9122D19AFC1588C2A49579
01.09.2015 12:27:23 DCC_4 (PP_AuthenticationServer) I: getMandantFor: 540C407B5B9122D19AFC1588C2A49579
Вот этот код - 540C407B5B9122D19AFC1588C2A49579 - это и есть идентификатор сессии, и он остается неизменным для разных окон.
При залогинивании и перелогинивании он, естественно, тоже не меняется.
В ответ на:
Когда он стартует?
При запуске веб-сервера или при вызове doGet() или doPost()?

Второе.
Дебаггер у меня есть, в Эклипсе, но в данном случае от него мало проку, дебаггить я могу только апплет, запускаемый в Эклипсе, а не в браузере.
Код сервлета прилагаю.
Эй, фуфло, готовься к шмону, ты на стрём поставлен у ворот... Присоединяйтесь: https://t.me/kudy_vadis
#29 
v0id* патриот04.09.15 23:38
v0id*
NEW 04.09.15 23:38 
в ответ MrSanders 04.09.15 22:43
В ответ на:
А как это можно предотвратить?
Настройками браузера. Читай - никак. Ещё раз, копая в эту сторону вы решения не найдёте.

Решения, конечно, нет, я лишь хотел удостовериться, что дело именно в двух Ява-машинах.
А пока я и причины не знаю, трудно что-то лечить.
В ответ на:
Вы меня запутали. Что вы называете сессией? HttpSession или что-то своё, что вы контролируетее сами?

Сессия - это.. сессия!
В принципе можно вообще работать, не залогиниваясь (при отключенной секьюрити), что мы часто и делаем. Вы же не будете говорить, что в этом случае нет никакой сессии?
Ну, вот кусочек лога:
01.09.2015 12:27:23 DCC_4 (25) I: >>>> Start of external request (getClientParamForMandant) - id (25)
01.09.2015 12:27:23 DCC_4 (25) I: prepareForRequest <25>
01.09.2015 12:27:23 DCC_4 (25) I: request for access key: 540C407B5B9122D19AFC1588C2A49579
01.09.2015 12:27:23 DCC_4 (PP_AuthenticationServer) I: getMandantFor: 540C407B5B9122D19AFC1588C2A49579
Вот этот код - 540C407B5B9122D19AFC1588C2A49579 - это и есть идентификатор сессии, и он остается неизменным для разных окон.
При залогинивании и перелогинивании он, естественно, тоже не меняется.
В ответ на:
Когда он стартует?
При запуске веб-сервера или при вызове doGet() или doPost()?

Второе.
Дебаггер у меня есть, в Эклипсе, но в данном случае от него мало проку, дебаггить я могу только апплет, запускаемый в Эклипсе, а не в браузере.
Код сервлета прилагаю. Последние сеттер и геттер - это уже мои сегодняшние художества.
Эй, фуфло, готовься к шмону, ты на стрём поставлен у ворот... Присоединяйтесь: https://t.me/kudy_vadis
#30 
Murr патриот04.09.15 23:39
Murr
NEW 04.09.15 23:39 
в ответ v0id* 04.09.15 22:22
Мозилла, возможно, не будет запускать две ява-машинки, и тогда я хоть пойму
------
Нее, не поймешь. Потому как это не Мозилла вс ИЕ, а МС <JVM> вс САН <JVM>. Ну и плюс конфигурация <JVM>.
Но даже если если разберешься в чем разница - тебе оно, кроме как для понимания ситуации, безполезно.
#31 
v0id* патриот04.09.15 23:43
v0id*
NEW 04.09.15 23:43 
в ответ MrSanders 04.09.15 22:43
Пардон, ни txt, ни Ворд-файлы тут почему-то не цепляются.
Как же его прицепить-то?
Ну, ладно, придется запостить так, не весь:
/**
* This classs initializes the RMI-Server.
*
* @author cirquent
* @version 1.86 31.07.2008
*/
public class StartServer
{
private static Properties c_argProperties = new Properties();
private final static String c_actualVersion = "9.5.0.1";

private static Main- - c_main- - = null;

// main routine for starting the rmi-server
public static void main(String[] args)
{
// LogConsole starts only if the parameter LogConsole is set to 1
// Set the LogConsoleX and LogConsoleY parameters for a specific position
// of the console on your screen
if ((System.getProperty("LogConsole")) != null && System.getProperty("LogConsole").equals("1"))
{
int iLogConsoleX=0;
int iLogConsoleY=0;
if (System.getProperty("LogConsoleX")!=null) iLogConsoleX=Integer.parseInt(System.getProperty("LogConsoleX"));
if (System.getProperty("LogConsoleY")!=null) iLogConsoleY=Integer.parseInt(System.getProperty("LogConsoleY"));
new LogConsole("Server",iLogConsoleX,iLogConsoleY);
}
String strHostName = "";
int iRMIPort = 1099; // default port of the rmiregistry
String strProduct = null;
String strInstanceNumber = null;
String temp;
// use DCC specific copy configuration
CopyConfiguration.loadConfiguration();
//In the Moment, we set no Security! It remains to check, if you can do it with policy-files
System.setSecurityManager(new RMISecurityManager());
// we have to set a virtual request name for the following requests
// (this is necessary for the current concept of reentrant database
// access)
Thread.currentThread().setName("StartServer");
// define that we are located on the server...
GeneralServerAdapter_RMI.setLocatedOnServer(true);
// show threadname in trace output on server side
Trace.setShowThreadName(true);
//parse the input parameters of the main-program
System.out.println ("Server " + c_actualVersion);
try
{
parseInputArgs (args);
}
catch (Exception e)
{
System.out.println ("Error in the input parameters");
System.out.println("Usage: java [vmargs] [package].StartServer -p <programname> -n <instancenr>");
System.out.println("The rmiserver-process was not started");
System.exit(-1);
}
//Show the System and Program Properties!
if (System.getProperty("properties.show") != null)
printProperties();
//parse the parameters of the vm
try
{
//product + instancenumber
strProduct = System.getProperty("product");
Assertion.verify(strProduct != null);
strInstanceNumber = System.getProperty("instance");
Assertion.verify(strInstanceNumber != null);
//set a prefix to the rmi-servername to distinguish different Servers
temp = strProduct + "_" + strInstanceNumber;
GeneralServer.setServerNamePrefix(temp + ".");
// we can set it globally because any instance of this adapter
// has to use this prefix...
GeneralServerAdapter.setGlobalServerNamePrefix(temp + ".");
Trace.setPrefix(temp);
// trace on/off?
if (System.getProperty("Trace") != null)
Trace.setTraceLevel(Integer.parseInt(System.getProperty("Trace")));
// 1. database parameters
// (the flag on calls to DBAccess-class decide for local (true) or
// central (false) database)
// a) local database
if (System.getProperty("db.server") != null)
DBAccess.setDBServer(System.getProperty("db.server"), true);
if (System.getProperty("db.database") != null)
{
temp = System.getProperty("db.database");
if (temp != null)
DBAccess.setDBName(temp, true);
}
if (System.getProperty("db.user") != null)
DBAccess.setDBUser(System.getProperty("db.user"), true);
if (System.getProperty("db.password") != null)
DBAccess.setDBPassword(System.getProperty("db.password"), true);
if (System.getProperty("db.url_param") != null) {
DBAccess.setDBAddParamAtUrl(System.getProperty("db.url_param"));
}
if (System.getProperty("db.jdbcurl") != null)
DBAccess.setDBURL(System.getProperty("db.jdbcurl"), true);
if (System.getProperty("db.host") != null)
DBAccess.setDBHost(System.getProperty("db.host"), true);
if (System.getProperty("db.port") != null)
DBAccess.setDBPort(System.getProperty("db.port"), true);
// b) central database
if (System.getProperty("dbc.server") != null)
DBAccess.setDBServer(System.getProperty("dbc.server"), false);
if (System.getProperty("dbc.database") != null)
{
temp = System.getProperty("dbc.database");
if (temp != null)
DBAccess.setDBName(temp, false);
}
if (System.getProperty("dbc.user") != null)
DBAccess.setDBUser(System.getProperty("dbc.user"), false);
if (System.getProperty("dbc.password") != null)
DBAccess.setDBPassword(System.getProperty("dbc.password"), false);
if (System.getProperty("dbc.jdbcurl") != null)
DBAccess.setDBURL(System.getProperty("dbc.jdbcurl"), false);
if (System.getProperty("dbc.host") != null)
DBAccess.setDBHost(System.getProperty("dbc.host"), false);
if (System.getProperty("dbc.port") != null)
DBAccess.setDBPort(System.getProperty("dbc.port"), false);
// 2. RMI-Server-Parameter
if (System.getProperty("rmi.host") != null)
{
temp = System.getProperty("rmi.host");
if (temp.indexOf(":") > 0)
{
//hostname contains rmi-port
strHostName = temp.substring(0, temp.indexOf(":"));
iRMIPort = Integer.parseInt(temp.substring(temp.indexOf(":")+1, temp.length()));
}
else
{
strHostName = temp;
iRMIPort = 1099; //default
}
//set the full hostname to the server and serverAdapter
GeneralServer.setHostName(strHostName);
GeneralServer.setRMIPort(iRMIPort);
GeneralServerAdapter.setHostName(strHostName);
GeneralServerAdapter.setRMIPort(iRMIPort);
}
//is a different path for NdCrypt set ? Position inc. filename
if (System.getProperty("CryptPath") !=null)
{
setCryptFilePath(System.getProperty("CryptPath"));
}
// activate security?
// this should be a unknown flag for the clients
if (System.getProperty("local.security") != null)
{
boolean fOn = (!System.getProperty("local.security").equals("0"));
Trace.traceInfo("Security enabled: " + fOn);
GeneralServer.setSecurityEnabled(fOn);
}
else
{
Trace.traceInfo("Security enabled: " + true);
GeneralServer.setSecurityEnabled(true);
}
if (GeneralServer.isSecurityEnabled())
{
// If security on, get Password from NdCrypt and inform DBAccess-class
// (password for local and central database)
DBAccess.setDBPassword(SecuritySupport.getPasswordProductDB(), true);
//DBAccess.setDBPassword("RevisionssicherheitICM6#", true);
// we only need the password for the central database in case it is
// different from the local database
if (!DBAccess.isLocalAndCentralDBIdentical())
DBAccess.setDBPassword(SecuritySupport.getPasswordCentralDB(), false);
}
// set a special time for automatic logoff ?
if (System.getProperty("logoffTime") != null)
{
AuthenticationServer.setAccessTimeExpiration(System.getProperty("logoffTime"));
}
String outFile = null;
if( (outFile = System.getProperty("sql.outfile")) != null)
{
try{
Trace.traceInfo("SQL commands are written to file: \'" + outFile + "\'");
if ( ! FileLogger.initLogFile( outFile, FileLogger.SQL_LOG ) )
{
throw new Exception ();
}
}
catch (Exception e)
{
System.out.println ("Error in opening sql outfile");
System.out.println("The rmiserver-process was not started");
System.exit(-1);
}
}
outFile = null;
if( (outFile = System.getProperty("sysmsg.outfile")) != null)
{
try{
Trace.traceInfo("System messages are written to file: \'" + outFile + "\'");
if ( ! FileLogger.initLogFile( outFile, FileLogger.SYSMSG_LOG ) )
{
throw new Exception ();
}
}
catch (Exception e)
{
System.out.println ("Error in opening system messages outfile");
System.out.println("The rmiserver-process was not started");
System.exit(-1);
}
}
// show automatic logoff time
AuthenticationServer.showAccessTimeExpiration();
// handle special parameters to modify server behaviour for performance
// (caching of result sets)
if (System.getProperty("perf.blocksize") != null)
DBAccess.setTransferBlockSize(Integer.parseInt(System.getProperty("perf.blocksize")));
if (System.getProperty("perf.expirationtime") != null)
DBAccess.setCacheEntryExpirationTime(Integer.parseInt(System.getProperty("perf.expirationtime")));
if (System.getProperty("perf.maxcachesize") != null)
DBAccess.setMaxCacheSize(Integer.parseInt(System.getProperty("perf.maxcachesize")));
if (System.getProperty("perf.maxresultsize") != null)
DBAccess.setMaxResultSetSize(Integer.parseInt(System.getProperty("perf.maxresultsize")));
DBAccess.showPerformanceParams();
// special parameter to set the maximum transfer blocksize for rmi-communication
if (System.getProperty("comm.transferblocksize") != null)
ndPersistenceServer.setMaxTransferBlockSize(Integer.parseInt(System.getProperty("comm.transferblocksize")));
if (System.getProperty("comm.transfercompression") != null)
ndPersistenceServer.setUseCompressionForTransfer(Integer.parseInt(System.getProperty("comm.transfercompression")) != 0);
if (System.getProperty("shell.timezone") != null)
CurrentDateSupport.setTimeSupport(System.getProperty("shell.timezone"));
Trace.traceInfo("set param -Dshell.timezone: " + CurrentDateSupport.getTimeSupport());
try
{
Registry reg = null;
// try to get a registry from given host
if (strHostName.length() > 0)
{
try
{
Trace.traceInfo("getRegistry: " + strHostName + " : " + iRMIPort);
reg = LocateRegistry.getRegistry(strHostName, iRMIPort);
// we have to contact the registry to check if it's really available
Assertion.verify(reg != null);
reg.list();
}
catch (Throwable e)
{
reg = null;
}
}
// try to get the registry on the current host
if (reg == null)
{
Trace.traceInfo("getRegistry : "+iRMIPort);
reg = LocateRegistry.getRegistry(iRMIPort);
// we have to contact the registry to check if it's really available
Assertion.verify(reg != null);
reg.list();
}
}
catch (Throwable e)
{
// if no registry was found - try to create one
Trace.traceInfo("createRegistry");
LocateRegistry.createRegistry(iRMIPort);
}
General- -.setServerForClass(ndDate.class, new ndDateServerAdapter_RMI());
General- -.setServerForClass(EventLog.class, new EventLogServerAdapter_RMI());
General- -.setServerForClass(dccEventLog.class, new dccEventLogServerAdapter_RMI());
General- -.setServerForClass(History.class, new HistoryServerAdapter_RMI());
General- -.setServerForClass(BackendAccess.class, new BackendAccessServerAdapter_RMI());
General- -.setServerForClass(Log.class, new LogServerAdapter_RMI());
General- -.setServerForClass(Currency.class, new CurrencyServerAdapter_RMI());
General- -.setServerForClass(DataManager.class, new DataManagerServerAdapter_RMI());
General- -.setServerForClass(Customer.class, new CustomerServerAdapter_RMI());
General- -.setServerForClass(DiAccount.class, new DiAccountServerAdapter_RMI());
General- -.setServerForClass(Settlement.class, new SettlementServerAdapter_RMI());
General- -.setServerForClass(DreCatiSettlement.class, new DreCatiSettlementServerAdapter_RMI());
General- -.setServerForClass(DreCatiCurrencyManager.class, new DreCatiCurrencyManagerServerAdapter_RMI());
General- -.setServerForClass(DreCatiAccount.class, new DreCatiAccountServerAdapter_RMI());
General- -.setServerForClass(DreCatiTrancheControl.class, new DreCatiTrancheControlServerAdapter_RMI());
General- -.setServerForClass(DccAccount.class, new DccAccountServerAdapter_RMI());
General- -.setServerForClass(User.class, new UserServerAdapter_RMI());
General- -.setServerForClass(LocalUser.class, new UserServerAdapter_RMI());
General- -.setServerForClass(Message.class, new MessageServerAdapter_RMI());
General- -.setServerForClass(ndMessage.class, new ndMessageServerAdapter_RMI());
General- -.setServerForClass(Authentication.class, new AuthenticationServerAdapter_RMI());
General- -.setServerForClass(MsgAccess.class, new MsgAccessServerAdapter_RMI());
General- -.setServerForClass(Program.class, new ProgramServerAdapter_RMI());
General- -.setServerForClass(ndProcess- -.class, new ndProcessServerAdapter_RMI());
General- -.setServerForClass(InRoutingConfig.class, new InRoutingConfigServerAdapter_RMI());
General- -.setServerForClass(Queue.class, new QueueServerAdapter_RMI());
General- -.setServerForClass(ndTargetApplication.class, new ndTargetApplicationServerAdapter_RMI());
General- -.setServerForClass(MessagePrefix.class, new MessagePrefixServerAdapter_RMI());
General- -.setServerForClass(Language.class, new LanguageServerAdapter_RMI());
General- -.setServerForClass(ndMandant.class, new MandantServerAdapter_RMI());
General- -.setServerForClass(Mandant.class, new MandantServerAdapter_RMI());
General- -.setServerForClass(UserGroup.class, new UserGroupServerAdapter_RMI());
General- -.setServerForClass(TextResourceBundle.class, new TextHandlerServerAdapter_RMI());
General- -.setServerForClass(Holiday.class, new HolidayServerAdapter_RMI());
General- -.setServerForClass(ndAcknowledgement.class, new AcknowledgementServerAdapter_RMI());
General- -.setServerForClass(InvalidPassword.class, new InvalidPasswordServerAdapter_RMI());
General- -.setServerForClass(SystemParameter.class, new SystemParameterServerAdapter_RMI());
General- -.setServerForClass(ApplParameter.class, new ApplParameterServerAdapter_RMI());
General- -.setServerForClass(ClientApplParameter.class, new ClientApplParameterServerAdapter_RMI());
General- -.setServerForClass(ClientBackendParameter.class, new ClientBackendParameterServerAdapter_RMI());
General- -.setServerForClass(Branch.class, new BranchServerAdapter_RMI());
General- -.setServerForClass(TextHandler.class, new TextHandlerServerAdapter_RMI());
General- -.setServerForClass(ConcHistory.class, new ConcHistoryServerAdapter_RMI());
General- -.setServerForClass(Country.class, new CountryServerAdapter_RMI());
General- -.setServerForClass(SysRouteDelete.class, new SysRouteDeleteServerAdapter_RMI());
General- -.setServerForClass(Statistics.class, new StatisticsServerAdapter_RMI());
General- -.setServerForClass(Department.class, new DepartmentServerAdapter_RMI());
General- -.setServerForClass(OutsourcingControl.class, new OutsourcingControlServerAdapter_RMI());
General- -.setServerForClass(Pricing.class, new PricingServerAdapter_RMI());
General- -.setServerForClass(AccountLength.class, new AccountLengthServerAdapter_RMI());
General- -.setServerForClass(ReorganisationDB.class, new ReorganisationDBServerAdapter_RMI());
General- -.setServerForClass(IntdualcAccount.class, new IntdualcAccountServerAdapter_RMI());
General- -.setServerForClass(IntdualcSettlement.class, new IntdualcSettlementServerAdapter_RMI());
General- -.setServerForClass(ndPricingRemittance.class, new ndPricingRemittanceServerAdapter_RMI());
General- -.setServerForClass(DiSettlement.class, new DiSettlementServerAdapter_RMI());
General- -.setServerForClass(OrgaDb.class, new OrgaDbServerAdapter_RMI());
// which servers are to start?
boolean fStartServerGrp1 = true;
boolean fStartServerGrp2 = true;
boolean fStartServerGrp3 = true;
boolean fStartServerGrp4 = true;
boolean fStartServerGrp5 = true;
// check whether args are set
if (args.length > 0)
{
String strArg = args[0];
if (strArg.equals("1"))
{
fStartServerGrp1 = true;
fStartServerGrp2 = false;
fStartServerGrp3 = false;
fStartServerGrp4 = false;
fStartServerGrp5 = false;
}
if (strArg.equals("2"))
{
fStartServerGrp1 = false;
fStartServerGrp2 = true;
fStartServerGrp3 = false;
fStartServerGrp4 = false;
fStartServerGrp5 = false;
}
if (strArg.equals("3"))
{
fStartServerGrp1 = false;
fStartServerGrp2 = false;
fStartServerGrp3 = true;
fStartServerGrp4 = false;
fStartServerGrp5 = false;
}
if (strArg.equals("4"))
{
fStartServerGrp1 = false;
fStartServerGrp2 = false;
fStartServerGrp3 = false;
fStartServerGrp4 = true;
fStartServerGrp5 = false;
}
if (strArg.equals("5"))
{
fStartServerGrp1 = false;
fStartServerGrp2 = false;
fStartServerGrp3 = false;
fStartServerGrp4 = false;
fStartServerGrp5 = true;
}
}
// Supply Server with client personality of data manager in case
// they have to use it
DataManager dm = new DataManager();
GeneralServer.setDataManager(dm);
GeneralData- -.setDataManager(dm);
// start the servers
//The AuthenticationSever has to be started first because of security (trust-id)
// This is the first server to bind to the registry. But unfortunately
// in some cases when this process created the registry the bind gets a timeout.
// So we try to do this first bind several times before we give up...
boolean fStarted = false;
int iCount = 0;
while (!fStarted)
{
try
{
iCount++;
new AuthenticationServer(true);
fStarted = true;
}
catch (Throwable e)
{
Trace.traceException(e);
// no try anymore
if (iCount >= 10)
throw e;
}
}
//first the DataManager to can check the programm version
new DataManagerServer();
//Cache the current productinstance in the datamanager!
ndProductInstanceData productInstance =
getProductInstance (dm, strProduct, Integer.parseInt(strInstanceNumber));
//check the current version
if (productInstance.getVersion() != null)
{
if (!productInstance.getVersion().equals(c_actualVersion))
{
Trace.traceError("Invalid version!");
Trace.traceError("Actual version: " + c_actualVersion);
Trace.traceError("Needed version: " + productInstance.getVersion());
Trace.traceError("The rmi-process was stopped");
System.exit(-1);
}
}
else
{
Trace.traceError("No version check (no version set in DB)");
}
// do it in groups because of problems with AIX
if (fStartServerGrp1)
{
new ndDateServer();
new MessageServer();
new ndMessageServer();
new LogServer(true);
new HistoryServer(true);
new EventLogServer(true);
new dccEventLogServer(true);
new UserServer(true);
new BackendAccessServer(true);
BackendAccessServer.setMessageClassName("de.entory.dcc.messagedomain.Message");
}
if (fStartServerGrp2)
{
new CustomerServer();
new DepartmentServer(true);
new DccAccountServer ();
new DiAccountServer();
new DiSettlementServer();
new SettlementServer();
new DreCatiSettlementServer();
new DreCatiCurrencyManagerServer();
new DreCatiAccountServer();
new IntdualcAccountServer();
new IntdualcSettlementServer();
new DreCatiTrancheControlServer();
new CurrencyServer ();
new TextHandlerServer();
new ReconciliationServer(true);
new MessageProcessingServer(true);
new MsgAccessServer(true);
new OrgaDbServer();
}
if (fStartServerGrp3)
{
new ProgramServer(true);
new ndProcessServer();
new InRoutingConfigServer(true);
new QueueServer(true);
new ndTargetApplicationServer(true);
new MessagePrefixServer(true);
new BranchServer();
new ReorganisationDBServer();
}
if (fStartServerGrp4)
{
new LanguageServer();
new MandantServer();
new UserGroupServer();
new HolidayServer();
new AcknowledgementServer();
new InvalidPasswordServer();
new SystemParameterServer(true);
new AccountLengthServer();
}
if (fStartServerGrp5)
{
new ApplParameterServer(true);
new ClientApplParameterServer(true);
new ClientBackendParameterServer(true);
new ConcHistoryServer ();
new CountryServer (true);
new SysRouteDeleteServer ();
new StatisticsServer ();
new OutsourcingControlServer ();
new ndPricingRemittanceServer();
new PricingServer();
}
// make the default mandant available to the DBAccess-class
ndMandantData data = dm.getDefaultMandant();
if (data != null)
DBAccess.setDefaultMandantId(data.getId());
else
DBAccess.setDefaultMandantId(null);
// now we have to inform the server that its now acting in a multi thread
// environment
ndPersistenceServer.setMultiThreadSupport(true);
//last, we must save our pid in the table process, to give the master
//the chance, to start us in case of confusion!
if ((c_argProperties.get("p") != null) && (c_argProperties.get("n") != null))
{
String strPnr = (String)c_argProperties.get("p");
String strInr = (String)c_argProperties.get("n");
writePidToProcess (strPnr, Integer.parseInt(strInr));
}
else
Trace.traceError("No actual pid was set (the rmi-server must be started with arguments!)");
// now prepare the meta data if requested
//Writing metadata should occur after writing the pid, because this
// action runs a couple of time, and the master want not wait so long!
if ((System.getProperty("db.md_cacheonstartup") == null) ||
!(System.getProperty("db.md_cacheonstartup").equals("0")))
prepareMetaData ();
}
catch (RemoteException e)
{
Throwable ex = e.detail;
ex.printStackTrace();
Trace.traceError("Fatal error: the rmi-serverprocess was stopped!");
System.exit(-1);
}
catch (Throwable e)
{
e.printStackTrace();
Trace.traceError("Fatal error: the rmi-serverprocess was stopped!");
System.exit(-1);
}
}
private static ndProductInstanceData getProductInstance (DataManager dm, String product, int instance) throws Exception
{
ndProductInstanceData searchData = new ndProductInstanceData();
searchData.setInstanceNumber(instance);
searchData.setProduct(product);
return (dm.getProductInstance (searchData));
}
private static void setCryptFilePath(String strPath)
{
SecuritySupport.setPathNdCrypt(strPath);
}
private static void writePidToProcess (String programName, int instNr)
{
int pid = getPid();
if (pid == -1)
{
Trace.traceError("Error reading PID from file " + getPidFileName());
Trace.traceError("The Table process was not updated!");
}
else
{
try
{
//Get the programNr for the programname from table program
ProgramSearchData prgramSearch = new ProgramSearchData ();
prgramSearch.setName(programName);
prgramSearch.setOnlyValidProgram(true);
Vector<?> v = Program.search(prgramSearch);
Assertion.verify(v.size() == 1);
int programNr = Integer.parseInt(((ProgramData)v.firstElement()).getId());
//Update process
ndProcessData data = new ndProcessData();
data.setActualPid(new Integer (pid));
data.setProgram(new Integer (programNr));
data.setInstanceNr(new Integer (instNr));
ndProcess- -.setActualPid(data);
Trace.traceInfo("The actual pid was set");
}
catch (GeneralException e)
{
Trace.traceError("The actual pid couldn't be updated!");
}
}
}
private static int getPid ()
{
int pid = -1;
Эй, фуфло, готовься к шмону, ты на стрём поставлен у ворот... Присоединяйтесь: https://t.me/kudy_vadis
#32 
Murr патриот04.09.15 23:43
Murr
NEW 04.09.15 23:43 
в ответ v0id* 04.09.15 23:36
При залогинивании и перелогинивании он, естественно, тоже не меняется.
-----
Это как раз не естественно для веба...
#33 
MrSanders старожил04.09.15 23:47
NEW 04.09.15 23:47 
в ответ Murr 04.09.15 23:39
В ответ на:
Нее, не поймешь. Потому как это не Мозилла вс ИЕ, а МС <JVM> вс САН <JVM>. Ну и плюс конфигурация <JVM>.

Чушь. микроштофовского сволочизма уже больше 10 лет как нет.
#34 
Murr патриот04.09.15 23:49
Murr
NEW 04.09.15 23:49 
в ответ MrSanders 04.09.15 23:47
Может и нет. Я, правда, иногда сталкиваюсь с тем что все еще есть...
#35 
v0id* патриот04.09.15 23:49
v0id*
NEW 04.09.15 23:49 
в ответ MrSanders 04.09.15 23:10
В ответ на:
А это возможно только если позволить апплету, вылезать из своей песочницы, например, менять переменные среды. Или писать в файл.

Писать в файл?
А что, это идея. Надо подумать. В файл или в БД, без разницы.
Эй, фуфло, готовься к шмону, ты на стрём поставлен у ворот... Присоединяйтесь: https://t.me/kudy_vadis
#36 
v0id* патриот04.09.15 23:55
v0id*
NEW 04.09.15 23:55 
в ответ Murr 04.09.15 23:43
В ответ на:
При залогинивании и перелогинивании он, естественно, тоже не меняется.
-----
Это как раз не естественно для веба...

Согласен, для веба не естественно, но для описанной мной выше ситуации - естественно.
Эй, фуфло, готовься к шмону, ты на стрём поставлен у ворот... Присоединяйтесь: https://t.me/kudy_vadis
#37 
MrSanders старожил05.09.15 00:15
NEW 05.09.15 00:15 
в ответ v0id* 04.09.15 23:43
ААААААА! Сделайте мне это развидеть!
Товарищи, это П№;%:ЕЦ! Поймайте аффтора этого .... продукта вторичной переработки и дефабержируйте его. Не дай бог он размножаться будет.
Почему вы говорите о сервлете, если ваш StartServer это простое приложение, запускающее RMI-шный сервер?
В ответ на:
Решения, конечно, нет, я лишь хотел удостовериться, что дело именно в двух Ява-машинах.
А пока я и причины не знаю, трудно что-то лечить.

Хозяин - барин. Посмотрите в Task Manager-е, например, сколько явовских процессов у вас бегает. Но ели у вас не прав локального администратора вы все процессы можете и не увидеть.
Причины я вам раза три назвал. Ваша логика работать может только по случайному стечению обстоятельств (и, похоже, только в микроштофовском иксплодере). По-хорошему и третий апплет не должен был ничего увидеть и так же запуститься как и предыдущие два.
В ответ на:
В принципе можно вообще работать, не залогиниваясь (при отключенной секьюрити), что мы часто и делаем. Вы же не будете говорить, что в этом случае нет никакой сессии?

Я лучше промолчу. Потому как я не понимаю что вы называете сессией и где ее у вас нет (или есть). Пока что я видел только что вы явно используете RMI-шный сервер.
В ответ на:
01.09.2015 12:27:23 DCC_4 (25) I: request for access key: 540C407B5B9122D19AFC1588C2A49579
01.09.2015 12:27:23 DCC_4 (PP_AuthenticationServer) I: getMandantFor: 540C407B5B9122D19AFC1588C2A49579

А откуда берется это значение? (540C407B5B9122D19AFC1588C2A49579) Кто его генерирует, или оно прошито в клиента?
В ответ на:
При залогинивании и перелогинивании он, естественно, тоже не меняется.

Сурово. При запуске нового клиента он тоже не меняется?
В ответ на:
При запуске веб-сервера или при вызове doGet() или doPost()?
Второе.

Все чудесатее и чудесатее. Вы при каждом входящем на веб-сервер GET запросе, попадающем на ваш сервлет (у вас точно есть сервлет? Класс extends HttpServlet?) что запускаете? StartServer.main(new String[0])?
Покажите код doGet()
Как ваш апплет общается с сервером? RMI? (у вас ведь точно апплет, да?)
#38 
MrSanders старожил05.09.15 00:23
NEW 05.09.15 00:23 
в ответ v0id* 04.09.15 23:49
В ответ на:
А что, это идея. Надо подумать. В файл или в БД, без разницы.

Не-не-не Дэвид Блэйн! Не надо думать эту идею. Это плохая, негодная идея. Вы не представляете сколько геморроя вы себе наживете при попытке разрешить апплету доступ к диску. Разве что вы можете на каждой машине, на которой он будет запускаться, явовские настройки безопасности поменять...
Даю намек - а в чем разница между сервером БД и вашим собственным сервером (сервлет, RMI-сервер, CORBA или что вы используете-то)?
#39 
BorisL0 знакомое лицо05.09.15 13:12
NEW 05.09.15 13:12 
в ответ v0id* 04.09.15 10:48
Как я понимаю, когда юзер куда-то логинится, его логи/пароль проверяются по соотв. базе данных. Можно ввести дополнительное поле в таблице пользователей БД, которое отвечает за то, залогинен пользователь или нет.
Соответственно, это помешает повторному логину.
#40 
1 2 3 4 5 6 7 8 9 все