Пока временно затихли бои на тему что круче — Java или .NET, самое время обсудить возможные пути интерграции этих технологий
Есть следующая задача. Имеется мощная надстройка над Oracle Workflow, работающая на сане. Нужно научиться дёргать из неё объекты .NET, работающие на Windows сервере.
Всё что умеет делать (?) Oracle Workflow — это вызывать сохранённые процедуры в собственной базе данных. Как известно SP в Oracle можно писать на Java (?), т.е. у нас уже появляется маленькая надежда получить выход наружу. Далее вполне логично использовать веб-сервисы, как наиболее простой способ взаимодействия между вражескими платформами. Написать веб-сервис на .NET не составляет никакого труда, вопрос лишь в том, как его вызвать из java. К тому же хорошо бы это уметь делать ещё и в обратном направлении.
Собственно теперь вопросы.
1. Правильны ли мои рассуждения?
2. Существуют ли другие более простые пути?
3. Какой инструментарий использовать для построения и использования веб-сервисов на java.
После исследования Java форума на RSDN имеем следующее:
1. Само собой Java. Вопрос только в том, чем отличаются между собой различные эдишины (J2EE, J2SE, J2ME) и какой мне нужен.
2. Eclipse как среда разработки. Попробовал NetBeans, но что-то он меня слабо возбуждает. Говорят есть ещё IDEA, стоит ли пробовать?
Остаются следующие вопросы:
1. Что и где брать для написания веб-сервисов на java?
2. Как я понимаю, здесь не обойтись без Апачи. Т.к. всё будет писаться и возможно отлаживаться на одной машине, то как его подружить с IIS?
3. Какими средствами в java можно вызвать сторонний веб-сервис?
4. Есть ли какие-нибудь приколы для java-объектов, вызываемых из сохранённых процедур Оракула?
Если нам не помогут, то мы тоже никого не пощадим.
Вах, какие люди!
IT>1. Само собой Java. Вопрос только в том, чем отличаются между собой различные эдишины (J2EE, J2SE, J2ME) и какой мне нужен.
ME — это для всяких палмов, мобильников и т.п. Вам не нужен.
SE — это просто джава. Так сказать generic edition :o)
EE — это джава для server-side применения. Вам, судя по всему, тоже не очень надо. Потому как всякие серверные дела за вас уже Оракл написал.
Выходит что надо просто SE.
IT>2. Eclipse как среда разработки. Попробовал NetBeans, но что-то он меня слабо возбуждает. Говорят есть ещё IDEA, стоит ли пробовать?
IDEA вещь платная.
IT>Остаются следующие вопросы:
IT>1. Что и где брать для написания веб-сервисов на java?
Apache Axis на данное время самое продвинутое из всего. Что-то ещё было у IBM на Alphaworks, но я давно туда не ходил и нет уверенности что они не слились с Акцизом...
IT>2. Как я понимаю, здесь не обойтись без Апачи. Т.к. всё будет писаться и возможно отлаживаться на одной машине, то как его подружить с IIS?
Со стороны оракла апач, а со стороны windows апач-то зачем? Это ж вебсервисы...
IT>3. Какими средствами в java можно вызвать сторонний веб-сервис?
Средствами библиотек, что делают ребята из Акциза.
IT>4. Есть ли какие-нибудь приколы для java-объектов, вызываемых из сохранённых процедур Оракула?
Вот по этому поводу ничего не могу сказать. Ибо не работал с ораклом...
It's nice to be important, but it's more important to be nice.
Здравствуйте, CTPEKO3A, Вы писали:
CTP>Вах, какие люди!
Дык эта... саны одолевают
CTP>Выходит что надо просто SE.
Ok.
CTP>IDEA вещь платная.
Значит идёт лесом.
IT>>1. Что и где брать для написания веб-сервисов на java?
CTP>Apache Axis на данное время самое продвинутое из всего. Что-то ещё было у IBM на Alphaworks, но я давно туда не ходил и нет уверенности что они не слились с Акцизом...
Посмотрим.
IT>>2. Как я понимаю, здесь не обойтись без Апачи. Т.к. всё будет писаться и возможно отлаживаться на одной машине, то как его подружить с IIS?
CTP>Со стороны оракла апач, а со стороны windows апач-то зачем? Это ж вебсервисы...
Так мне для отладки нужно. Хорошо бы это всё на одну машину поставить, и Апачи и IIS. Оракл не надо.
IT>>3. Какими средствами в java можно вызвать сторонний веб-сервис?
CTP>Средствами библиотек, что делают ребята из Акциза.
Thanks. Будем пробовать.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Всё что умеет делать (?) Oracle Workflow — это вызывать сохранённые процедуры в собственной базе данных. Как известно SP в Oracle можно писать на Java (?), т.е. у нас уже появляется маленькая надежда получить выход наружу. Далее вполне логично использовать веб-сервисы, как наиболее простой способ взаимодействия между вражескими платформами. Написать веб-сервис на .NET не составляет никакого труда, вопрос лишь в том, как его вызвать из java. К тому же хорошо бы это уметь делать ещё и в обратном направлении.
IT>Собственно теперь вопросы.
IT>1. Правильны ли мои рассуждения?
Я хранимые процедуры писал только на PL/SQL, но у меня серьезное подозрение, что есть ограничения на Java SP
IT>2. Существуют ли другие более простые пути?
В принципе из явы можно заюзать найтив код, а найтив код может заюзать .NET компонент
В частности есть всякие Java-COM бриджи (а .NET компонент может прикинуться COM)
У нас был проект мы из жабы генерили PPT презентацию с помощью поверпоинта.
IT>3. Какой инструментарий использовать для построения и использования веб-сервисов на java.
Я бы посоветовал Axis.
IT>2. Eclipse как среда разработки. Попробовал NetBeans, но что-то он меня слабо возбуждает. Говорят есть ещё IDEA, стоит ли пробовать?
Если нет религиозных предупреждений против платного софта, то обязательно попробуй.
Более удобного ИДЕ я не видел (если не учитывать визуальное генерение форм).
Eclipse бледное недоделанное подобие
IT>2. Как я понимаю, здесь не обойтись без Апачи. Т.к. всё будет писаться и возможно отлаживаться на одной машине, то как его подружить с IIS?
Аппач тебе нужен только если ты собираешься писать веб сервис на жава(тогда тебе точно не обойтись без J2EE). Подружить элементарно — повесить на другой порт.
IT>3. Какими средствами в java можно вызвать сторонний веб-сервис?
Все тот же аксис, или просто сформировать нужную XML и отослать ее на урл сервиса (понятно что не так удобно).
IT>4. Есть ли какие-нибудь приколы для java-объектов, вызываемых из сохранённых процедур Оракула?
Подозреваю что да
Здравствуйте, gl#b, Вы писали:
GB>Я хранимые процедуры писал только на PL/SQL, но у меня серьезное подозрение, что есть ограничения на Java SP
А какие есть ещё способы вырваться из PL/SQL? В SQL Server есть,например, пользовательские SP, которые можно писать на C++.
IT>>2. Существуют ли другие более простые пути? GB>В принципе из явы можно заюзать найтив код, а найтив код может заюзать .NET компонент GB>В частности есть всякие Java-COM бриджи (а .NET компонент может прикинуться COM) GB>У нас был проект мы из жабы генерили PPT презентацию с помощью поверпоинта.
Эта часть будет крутится на сане, поэтому я и думаю что лучше (проще) варианта чем веб-сервисы не найти. Можно было бы Корбу попотрошить, но скорее всего гемора будет больше.
IT>>3. Какой инструментарий использовать для построения и использования веб-сервисов на java. GB>Я бы посоветовал Axis.
Ok, решено
IT>>2. Eclipse как среда разработки. Попробовал NetBeans, но что-то он меня слабо возбуждает. Говорят есть ещё IDEA, стоит ли пробовать? GB>Если нет религиозных предупреждений против платного софта, то обязательно попробуй.
Предубеждения зависят от степени платности софта. Причём чем сильнее платность, тем больше предубеждения
Платить за неё 500 зелёных президентов как-то не очень в связи с тем, что Java нужна только для интеграции, а не для основного процесса разработки
IT>>2. Как я понимаю, здесь не обойтись без Апачи. Т.к. всё будет писаться и возможно отлаживаться на одной машине, то как его подружить с IIS? GB>Аппач тебе нужен только если ты собираешься писать веб сервис на жава(тогда тебе точно не обойтись без J2EE). Подружить элементарно — повесить на другой порт.
Значит нужен не J2SE, а J2EE? Апачи просто ставим и говорим ему "мужик, юзай другой порт". Ok.
IT>>3. Какими средствами в java можно вызвать сторонний веб-сервис? GB>Все тот же аксис, или просто сформировать нужную XML и отослать ее на урл сервиса (понятно что не так удобно).
Зачем такие извраты? Надеюсь в аксисе есть средства для автоматической генерации прокси для сервиса.
IT>>4. Есть ли какие-нибудь приколы для java-объектов, вызываемых из сохранённых процедур Оракула? GB>Подозреваю что да
Понятно. Возможно здесь придётся повозиться.
Если нам не помогут, то мы тоже никого не пощадим.
IT>>>2. Как я понимаю, здесь не обойтись без Апачи. Т.к. всё будет писаться и возможно отлаживаться на одной машине, то как его подружить с IIS? GB>>Аппач тебе нужен только если ты собираешься писать веб сервис на жава(тогда тебе точно не обойтись без J2EE). Подружить элементарно — повесить на другой порт. IT>Значит нужен не J2SE, а J2EE?
Нужно J2SE + для использования Axis потребуется сервлетный контейнер, в котором он будет выполняться. Например Tomcat, Jetty (из бесплатных). Насколько я помню, у Оракла есть что-то такое (по крайней мере в Enterprise Edition начиная с 8.1.7. Скорее всего на базе Tomcat). Apache HTTPD необязателен, потому как это просто HTTP-сервер. Но в некоторых случаях он очень рекомендуется (если вебсервисы будут вызываться через Internet, а не из своей сети). Отлаживаться можно без него.
IT> Апачи просто ставим и говорим ему "мужик, юзай другой порт".
А именно редактируем параметр Listen в httpd.conf.
IT>Зачем такие извраты? Надеюсь в аксисе есть средства для автоматической генерации прокси для сервиса.
WSDL2Java. Если надо опубликовать вебсервис, тогда Java2WSDL.
Здравствуйте, IT, Вы писали:
IT>А какие есть ещё способы вырваться из PL/SQL? В SQL Server есть,например, пользовательские SP, которые можно писать на C++.
Честно говоря я этот вопрос не копал.
Может как-то через шедуллер можно что-то вызвать или через евент.
IT>Эта часть будет крутится на сане, поэтому я и думаю что лучше (проще) варианта чем веб-сервисы не найти. Можно было бы Корбу попотрошить, но скорее всего гемора будет больше.
Если на другой плаформе то пожалуй да.
Корба это да ваще...
IT>Предубеждения зависят от степени платности софта. Причём чем сильнее платность, тем больше предубеждения IT>Платить за неё 500 зелёных президентов как-то не очень в связи с тем, что Java нужна только для интеграции, а не для основного процесса разработки
Ну можно и не покупать
IT>Значит нужен не J2SE, а J2EE? Апачи просто ставим и говорим ему "мужик, юзай другой порт". Ok.
Если будешь писать веб сервисы то однозначно J2EE(хотя отличия от SE достаточно условны).
апач действительно понадобится только в продакшн системе (если не будете юзать какой-нибудь оракловский контейнер). вся фишка в том, что при портах ниже 1024 понадобится рут доступ. апач умеет делать форк и отстыковывается от процесса рут в какого-нибудь безобидного юзера Нободи скажем, томкат — нет.
хотя если поставить нестандартный порт больше 1024, то проблем особых не будет. да и сервлет контейнер понадобится только для веб-сервисов.
уже интероперабилити пробовал на проектах не раз, все пучком, если возвращаемые типы из методов сделать массивами, а не коллекшинами. при этом аксис сгенерит все стабы вам и вы даже не задумаетесь о том, что на самом деле работаете с протоколом SOAP. легко, красиво (и не очень быстро
Здравствуйте, mr_dronski, Вы писали:
_>Здравствуйте, gl#b, Вы писали:
_>апач действительно понадобится только в продакшн системе (если не будете юзать какой-нибудь оракловский контейнер). вся фишка в том, что при портах ниже 1024 понадобится рут доступ. апач умеет делать форк и отстыковывается от процесса рут в какого-нибудь безобидного юзера Нободи скажем, томкат — нет.
А чего бы им не поюзать оракловский контейнер? За него платить не надо, плюс бесплатная поддержка.
It's nice to be important, but it's more important to be nice.
Здравствуйте, CTPEKO3A, Вы писали:
CTP>А чего бы им не поюзать оракловский контейнер? За него платить не надо, плюс бесплатная поддержка.
да, об этом как раз и речь. только внимательно прочитать лицензию на всяк. я вот читал про, то, как _вынуждены_ были разносить EJB и web по разным контейнерам из-за лицензии веблогика. какие-то там странные были пункты, что именно в их случае нельзя было делать colocation.
а как это не платить за оракловский контейнер? в смысле, что у них он уже есть? для девелоперов можно и СУБД на 3 сидюках взять, а вот в продакшине... хотя я уже около года не имею дело с ораклом (фух и, возможно, что-то поменялось. снего завтра пойдет?
Здравствуйте, mr_dronski, Вы писали:
_>уже интероперабилити пробовал на проектах не раз, все пучком, если возвращаемые типы из методов сделать массивами, а не коллекшинами. при этом аксис сгенерит все стабы вам и вы даже не задумаетесь о том, что на самом деле работаете с протоколом SOAP.
Можно использовать типизированные коллекции, тогда wsdl для веб-сервиса будет такой же как и в случае с массивами (это для .NET)
_>легко, красиво (и не очень быстро
Быстродействие пока не горит. Если будет медленно, то мы обвиним во всём Сан и Джаву и откроем долгосрочный проект на C++ с написанием своего протокола обмена
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, mr_dronski, Вы писали:
_>Здравствуйте, CTPEKO3A, Вы писали:
CTP>>А чего бы им не поюзать оракловский контейнер? За него платить не надо, плюс бесплатная поддержка.
_>да, об этом как раз и речь. только внимательно прочитать лицензию на всяк. я вот читал про, то, как _вынуждены_ были разносить EJB и web по разным контейнерам из-за лицензии веблогика. какие-то там странные были пункты, что именно в их случае нельзя было делать colocation.
Ничего не могу сказать про лицензии... Только вот в задаче, которая стоит перед зачинателем этой дискуссии что-то я не вижу упоминания про EJB.
_>а как это не платить за оракловский контейнер? в смысле, что у них он уже есть? для девелоперов
Сервлет контейнер идёт стандартно в поставке. Я, помнится, где-то года полтора назад трахался с этим чудищем, пытаясь заставить его слушать на другом порту... Вылечилось тем, что пока я мыкался руководство решило перейти на DB2 :o)
It's nice to be important, but it's more important to be nice.
Здравствуйте, IT, Вы писали:
IT>Можно использовать типизированные коллекции, тогда wsdl для веб-сервиса будет такой же как и в случае с массивами (это для .NET)
та для явы уже тоже. ЕА 2.0 релиз генериков уже пробовал — как по маслу только с ковариациями нужно будет разобраться, некогда было. и не таких ели осталось дело за разработчиками аксиса, но они легкие на подрыв.
IT> Быстродействие пока не горит.
наверное, от сети больше будет зависеть. но могу точно сказать, что в последнем проекте композитный веб интерфейс прокачивал 7 веб-сервисов с разнесенных по миру точек даже через момед очень приемлемо — не более 3-5 секунд на все про все. под низом аксис был.
Здравствуйте, IT, Вы писали: IT>Здравствуйте, mr_dronski, Вы писали: _>>уже интероперабилити пробовал на проектах не раз, все пучком, если возвращаемые типы из методов сделать массивами, а не коллекшинами... IT>Можно использовать типизированные коллекции, тогда wsdl для веб-сервиса будет такой же как и в случае с массивами (это для .NET)
Можно по подробнее? Мне нужно из среды .NET Compact Framework вызывать веб сервис на java, крутящийся под JBoss/Axis. Гемморой с регистрацией и получением нужной role уже прошел — UserName и Password вместо указания в свойстве Credentials указываю прямо в URL. Теперь возник новый глюк — при получении от сервера массива не могу его преобразовать в нужный тип/класс для .ncf. Возникает InvalidCastException. Это мой глюк или есть несостыковка .ncf и java в возвращаемых типах ? Это можно победить ?
> Можно по подробнее? Мне нужно из среды .NET Compact Framework вызывать > веб сервис на java, крутящийся под JBoss/Axis. Гемморой с регистрацией и > получением нужной role уже прошел — UserName и Password вместо указания > в свойстве Credentials указываю прямо в URL. Теперь возник новый глюк — > при получении от сервера массива не могу его преобразовать в нужный > тип/класс для .ncf. Возникает InvalidCastException. Это мой глюк или > есть несостыковка .ncf и java в возвращаемых типах ? Это можно победить ? > Оценить </Forum/Private/Rate.aspx?mid=289189&rate=-3>
Я .Нет потребляю со стороны явы, поэтому тут подсказать не могу. если
есть контакт с разаработчиком ява-сервиса — дергайте его, проблем быть
не должно, если аккуратно интерфейс подправить.