|
|
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста есть ли средство определить откуда происходит вызов метода - из соседнего в том же jar класса или извне этого jara? Это нужно для ограничений некоторых функций без лицензии. То есть внутри jar есть класс InnerClass с методом InnerMethod, который может вызывать и соседний в этом же jare класс, и класс клиента извне jara. Надо, чтобы класс InnerClass имел возможность распознать, откуда извне или изнутри jara пришел вызов и в зависимости от этого выполнить так или иначе метод InnerMethod. Есть такие возможности в Java? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2012, 20:06:16 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
Ну для этого существуют параметры. А что мешает завести две обертки над этим методом? одну, которую могут вызвать только классы из того же пакета, например с областью видимости default, и вторую - для всех остальных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2012, 20:57:30 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
Да и странно как-то не находите, логика метода зависит не от объекта, на котором вызывается метод, а от того, кто его вызывает? Мутновато это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2012, 20:59:15 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
забыл никДа и странно как-то не находите, логика метода зависит не от объекта, на котором вызывается метод, а от того, кто его вызывает? Мутновато это. А что именно мутноватого? Есть логика метода. Но Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Я схематично изобразил - но суть в этом. Как это реализовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2012, 21:24:30 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2012, 21:42:03 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
osonзабыл никДа и странно как-то не находите, логика метода зависит не от объекта, на котором вызывается метод, а от того, кто его вызывает? Мутновато это. А что именно мутноватого? Есть логика метода. Но Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Я схематично изобразил - но суть в этом. Как это реализовать? Суть в том, что если вам надо реализовать логику в зависимости от внешнего условия, надо в метод передать параметр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2012, 21:44:51 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
забыл никДа и странно как-то не находите, логика метода зависит не от объекта, на котором вызывается метод, а от того, кто его вызывает? Мутновато это. В стандартных библиотеках нередко анализируется право доступа к тому или иному ресурсу со стороны текущего thread'a с помощью SecurityManager'a. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2012, 21:52:34 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
Class.getProtectionDomain().getCodeSource().... такое штоль? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2012, 22:27:19 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
Reflection.getCallerClass() + .getProtectionDomain().getCodeSource() Ещё почитайте про sealed jar, возможно чем-то пригодится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2012, 23:21:17 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
Thread.currentThread().getStackTrace() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2012, 16:48:24 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
chabapokThread.currentThread().getStackTrace() Разворачиваение всего stack trace достаточно накладная операция. Поэтому, если очень надо, лучше таки использовать внутренний API hotspot. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2012, 17:09:04 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
авторРазворачиваение всего stack trace достаточно накладная операция А где это написано? Или это выведено экспериментально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2012, 17:57:23 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
chabapokА где это написано? Или это выведено экспериментально? Это очевидно, если знать как стек работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2012, 21:33:28 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
А как работает стек, согласно вашим представлениям? Я вот не знаю (но догадываюсь) как он работает в жаве, но знаю как он работает в х86 и как его используют компиляторы С. Но я уверен, что в жаве (исходя из того, что сегодняшним жава-машинам уже далеко до говнокода) стек вызовов, видимый через getStackTrace() работает несколько иначе - обратные адреса не перемежаются с переменными, поэтому стек вызовов тупо представляет из себя набор StackTraceElement или некоторых структур, которые легко проебразовать в StackTraceElement. getStackTrace() тупо копирует их в массив. И я не вижу особо накладных действий при разворачивании стека, хотя конечно все относительно. Единственный недостаток - это то что getStackTrace() копирует весь стек, который при большой глубине вызовов теоретически может быть довольно большим. На практике он обычно не очень большой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2012, 12:56:16 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
chabapokНа практике он обычно не очень большой. Ага. Практически никогда не бывает: http://rsdn.ru/forum/humour/1973177.1.aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2012, 13:06:48 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
Ну а я что говорю? Загрузили что-то весьма большое и получили размер стека гораздо меньше 1кб. Я посчитал, там около 100записей. а если учесть, что анализировать его как правило надо на уровне бизнес-логики - смело вычитаем 20% Приложению приходится отводить по умолчанию 4мб и даже больше потому, что некоторые индивиды страдают болезнью под названием рекурсия головного мозга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2012, 13:17:36 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
ОК. Ваша взяла. Хотя и разница между Unsafe и getStacktrace() огромная, в целом, производительность на современно железе не просядет. 10К вызовов new Throwable().getStackTrace()[0].getClassName(); 0.659870019 sec - 100 stack elements 1.913367376 sec - 300 stack elements Reflection.getCallerClass(0).getClass().getName(); 0.012597774 sec - 100 stack elements 0.015731135 sec - 300 stack elements ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2012, 13:23:36 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
мдя. взяла все же ваша :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2012, 15:42:12 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
Можно ли проверять вызов внешний или внутренний таким способом - например у меня все классы в пределах com.megacompany В методе, который вызывается, получаю имя вызывающего класса Если вижу, что пакет не com.megacompany, то сразу обозначаю вызов как внешний. Если же пакет соответствует com.megacompany , то проверяю не сделал ли клиент свои классы в том же пакете - беру имя класса и сравниваю со списком имен моих классов. Насколько я понимаю,установить в одном classpath 2 класса с одинаковым полным именем нельзя.Правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2012, 18:37:38 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
Что показывает метод boolean isNativeMethod() класса StackTraceElement? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2012, 23:29:57 |
|
||
|
Откуда вызов метода в jare
|
|||
|---|---|---|---|
|
#18+
Натиный метод - это тот, который исполняется не жавамашиной. Например, в dll-ке под виндой или в so-шнике под линуксом. А вот у меня вопрос. Имя вызвавшего класса мы научились узнавать. Как получить объект, если вызов был не из статического метода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2012, 19:07:48 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37741819&tid=2131964]: |
0ms |
get settings: |
17ms |
get forum list: |
27ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
82ms |
get topic data: |
25ms |
get forum data: |
6ms |
get page messages: |
121ms |
get tp. blocked users: |
3ms |
| others: | 395ms |
| total: | 692ms |

| 0 / 0 |
