Предположим, я пишу EJB (v 3.0) для использования в качестве удаленного EJB.
Я написал интерфейс удаленного бизнеса, реализовал методы интерфейса в классе компонента (компонент также использует другие объекты Java для передачи данных клиенту, эти классы определены как сериализуемые для маршалинга по сети), и теперь я хочупредоставить этот бин клиентам.Для использования функциональности bean-компонента клиенту необходим бизнес-интерфейс этого bean-компонента, а также классы, которые используются для передачи данных от bean-компонента к клиенту.
Чтобы решить эту проблему, я сделал банку из этого боба и предоставил ее клиентам.Затем клиенты должны добавить эту библиотеку jar в проект клиента и после этого найти реализацию компонента, используя метод lookup
из класса Context
.
Но когда я создаю jar-файл, он помещает все классы bean-компонентов в jar-архив, поэтому клиент может декомпилировать байт-код jar и увидеть реальную реализацию моего интерфейса.Это не очень хорошая практика.
Так, как я могу предоставить все необходимые интерфейсы клиентам, не обеспечивая реальную реализацию?