Какой самый простой способ обернуть хранимую процедуру в веб-сервис? - PullRequest
3 голосов
/ 08 апреля 2009

У нас есть устаревшая система, которая содержит ряд хранимых процедур, которые мы хотели бы представить другим приложениям в качестве веб-служб. Мы создаем веб-сервисы с JBoss. Хранимые процедуры могут запускаться из баз данных Oracle, DB2 или MS SQL Server.

В JDeveloper есть мастер для создания заглушек и развертывания в файл ear, который будет работать на сервере приложений Oracle (OC4J). Мы находимся в процессе перехода на JBoss и используем Eclipse в качестве нашей IDE.

Я бы лучше использовал фреймворк, а потом перестраивал и обслуживал инфраструктуру сам. В идеале я хотел бы использовать библиотеку с открытым исходным кодом или инструмент / среду IDE для создания веб-службы на основе определения пула соединений и имени хранимой процедуры.

Какие у меня варианты?

Ответы [ 5 ]

4 голосов
/ 08 апреля 2009

Если хранимые процедуры не были написаны с намерением быть напрямую представленными как операции веб-службы, тогда может быть очень плохой идеей выставить их. Они могут делать предположения, которые не будут правдой, если их напрямую вызывать.

Альтернативой является разработка внешнего API на основе требований. Если окажется, что лучший способ реализовать одну конкретную операцию - это вызвать хранимую процедуру, тогда сделайте это. Если окажется, что лучший способ реализовать все операции - это вызвать существующие хранимые процедуры, тогда вы были правы, а я просто потратил ваше время.

Но я думаю, что, скорее всего, будут некоторые операции, которые не лучше всего реализовать путем прямого вызова существующих хранимых процедур.

2 голосов
/ 14 апреля 2009

Возможно, вы захотите изучить использование EJB в этом контексте. Все контейнеры J2EE 1.4 должны поддерживать JSR 109 , что позволяет отображать EJB как веб-сервисы.

В частности, вы можете обернуть вызовы хранимых процедур внутри EJB-компонентов сеансов без сохранения состояния, а затем представить их как веб-службы.

OC4J 10.1.3 и JBoss 4 поддерживают эту модель развертывания. Как и любой другой J2EE 1.4-совместимый контейнер. Вам просто нужно найти подтверждающую документацию по , как перенастроить (в отличие от перекодирования) приложение в этом контейнере.

1 голос
/ 17 апреля 2009

В JBoss самым простым способом предоставления этих сервисов будет использование сессионного компонента EJB3 без состояния. Используя эту модель, вы получаете доступ ко многим дополнительным функциям (пул ресурсов, поддержка транзакций и т. Д.).

@WebService
@SOAPBinding(style = Style.RPC)
public interface StoredProcedureWrapper extends Remote {
        String invokeStoredProc();
}

@Stateless
@WebService(endpointInterface = "path.to.StoredProcedureWrapper")
@Remote(StoredProcedureWrapper.class)
public class StoredProcedureWrapperBean {
        public String StoredProcedureWrapper() {
                // do business logic
                return "success";
        }
}
1 голос
/ 11 апреля 2009

Не уверен, что вы найдете именно то, что ищете, поэтому, если вы пишете что-то самостоятельно, то здесь есть две альтернативы:

  1. Используйте универсальный веб-сервис, который получит имя SP, параметры и вызовет процедуру. Это не очень удобно для вызывающего абонента и небезопасно, но оно выполнит свою работу.

  2. Используйте двухэтапный подход. Первый шаг - оберните вашу хранимую процедуру в класс Java (либо POJO, либо EJB). Второй шаг - представить класс как веб-сервис с использованием Apache Axis2, который очень популярен, опробован и протестирован.

Пришёл быстрый поиск с этой структурой для упаковки SP в EJB, но я сам не проверял. Кроме того, я думаю, что некоторые поставщики имеют проприетарные инструменты для этой цели. Это гораздо более простой вопрос, конечно.

1 голос
/ 09 апреля 2009

Я нашел среду с открытым исходным кодом (лицензированную Apache), которая называется Службы данных из WS02 . Кто-нибудь пробовал это? Есть какие-либо советы / советы / предупреждения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...