2017-02-20 22 views
0

Я сделал много исследований по этой теме, но их немного, поэтому эта доска - моя единственная надежда.Использование javassist в oracle weblogic

У меня есть несколько должников, работающих на веб-сервере oracle 11c, есть несколько вещей, которые нужно изменить в коде развертывания, но улов в том, что мне не разрешено изменять код, который я могу использовать только в некотором роде инъекции предпочтительно джавассист.

У меня есть доступ к коду развертывания, я точно знаю, какая строка должна быть изменена. Какой лучший подход, есть ли какой-либо синтаксис в javassist, который позволяет вам заменить определенную строку в коде?

ответ

1

Посмотрите here:

Вставка фрагмента кода в позиции, указанной номером строки также возможно (если таблица номер строки содержится в файле класса). insertAt() в CtMethod и CtConstructor принимает исходный текст и номер строки в исходном файле исходного определения класса. Он компилирует исходный текст и вставляет скомпилированный код в номер строки.

Другими словами: структура, которую вы ищете, по-видимому, поддерживает ваше требование; остальное просто садится и проводит эксперименты.

Что касается вашего комментария: тогда вам, вероятно, придется бить пулю и забыть об изменении одной строки; вместо этого вы выполняете следующие инструкции:

CtMethod и CtConstructor предоставляют setBody() для замены всего тела метода.

Значение: каркасы поддерживает добавив до информации к способу; или заменяя весь метод; но не заменяя детали метода корпус.

+0

Да, он вставляет его, но старый код остается там, который необходимо заменить – stef

+0

См. Мои обновления. – GhostCat

 Смежные вопросы

  • Нет связанных вопросов^_^