«EJB Backend с интерфейсом NetBeans RCP» звучит довольно просто, верно? Я тоже так думал изначально. К сожалению, есть несколько неприятных и не очень маленьких ударов, которые превращают это из поездки в магазины куда-то на ралли на крыше Африки!
Первый шаг прост, давайте использовать прилагаемый сервер приложений GlassFish …
И там проходит расстраивающая пара часов / дней / недель вашей жизни. Позволь мне объяснить.
У GlassFish есть клиентский JAR (
$ GLASSFISH_HOME / modules / gf-client.jar ), который вы должны включить в свое приложение для подключения к EJB-серверу. Все это прекрасно работает, когда вы тестируете свои
общедоступные статические основные тесты void , однако следует отметить несколько моментов, которые не сразу проявятся на вашей машине для разработки:
- gf-client.jar — это просто мета-jar, все, что он делает, ссылается на другие JAR-файлы, которые, в свою очередь, могут ссылаться на другие JAR-файлы до бесконечности.
- В тот момент, когда вы снимаете тестовое приложение с компьютера, оно не будет работать. По всей вероятности, вы включили gf-client.jar, но вы не включили все его ссылки. Это означает, что вам нужно установить GlassFish App Server на все компьютеры, на которые вы хотите установить программное обеспечение, или выяснить, что такое дерево зависимостей. (Я сэкономлю вам немного времени, это почти то же самое, что и установка. Вы получаете все файлы, которые включены в полную установку.)
- После того, как вы все это выясните, ваше приложение NetBeans все равно не будет работать. Зачем? Читайте здесь и здесь, чтобы понять проблему.
Хорошо, давайте вернем это шоу в дорогу. Что нам понадобится, чтобы заставить это работать?
- NetBeans
- специалист
- JBoss
- Терпение
Настройка клиентских библиотек JBoss
Прежде всего, вам нужно найти все зависимости клиента JBoss и создать из них артефакт Maven. К счастью, мне не нужно было этого делать, кто-то уже понял это
для меня .
Вот файл pom:
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelversion>4.0.0</modelversion> <groupid>sparg.tim</groupid> <artifactid>JBossClientLibraries</artifactid> <packaging>jar</packaging> <version>5.10</version> <name>JBossClientLibraries</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupid>org.jboss.javaee</groupid> <artifactid>jboss-javaee</artifactid> <version>5.0.1.GA</version> </dependency> <dependency> <groupid>org.hibernate</groupid> <artifactid>hibernate-annotations</artifactid> <version>3.4.0.GA</version> <exclusions> <exclusion> <groupid>org.hibernate</groupid> <artifactid>hibernate-commons-annotations</artifactid> </exclusion> <exclusion> <groupid>org.hibernate</groupid> <artifactid>hibernate-core</artifactid> </exclusion> <exclusion> <groupid>dom4j</groupid> <artifactid>dom4j</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.jboss.naming</groupid> <artifactid>jnp-client</artifactid> <version>5.0.3.GA</version> </dependency> <dependency> <groupid>oswego-concurrent</groupid> <artifactid>concurrent</artifactid> <version>1.3.4-jboss-update1</version> </dependency> <dependency> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-proxy-clustered</artifactid> <version>1.0.1</version> <classifier>client</classifier> <exclusions> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-proxy-impl</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-proxy-spi</artifactid> </exclusion> <exclusion> <groupid>org.jboss.cluster</groupid> <artifactid>jboss-ha-server-api</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-proxy-spi</artifactid> <version>1.0.0</version> <classifier>client</classifier> </dependency> <dependency> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-proxy-impl</artifactid> <version>1.0.2</version> <classifier>client</classifier> <exclusions> <exclusion> <groupid>org.jboss.aspects</groupid> <artifactid>jboss-remoting-aspects</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-common</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-proxy-spi</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-interceptors</artifactid> </exclusion> <exclusion> <groupid>org.jboss.metadata</groupid> <artifactid>jboss-metadata</artifactid> </exclusion> <exclusion> <groupid>org.jboss.naming</groupid> <artifactid>jnpserver</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-core</artifactid> <version>1.1.5</version> <classifier>client</classifier> <exclusions> <exclusion> <groupid>javassist</groupid> <artifactid>javassist</artifactid> </exclusion> <exclusion> <groupid>org.hibernate</groupid> <artifactid>hibernate</artifactid> </exclusion> <exclusion> <groupid>org.hibernate</groupid> <artifactid>hibernate-entitymanager</artifactid> </exclusion> <exclusion> <groupid>org.jboss.integration</groupid> <artifactid>jboss-jca-spi</artifactid> </exclusion> <exclusion> <groupid>org.jboss</groupid> <artifactid>jboss-vfs</artifactid> </exclusion> <exclusion> <groupid>org.jboss.aop</groupid> <artifactid>jboss-aop</artifactid> </exclusion> <exclusion> <groupid>org.jboss.aop</groupid> <artifactid>jboss-aop-aspects</artifactid> </exclusion> <exclusion> <groupid>org.jboss.cache</groupid> <artifactid>jbosscache-core</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-cache</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-endpoint</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-security</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-timerservice-spi</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-ext-api-impl</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-metadata</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-proxy-clustered</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-transactions</artifactid> </exclusion> <exclusion> <groupid>org.jboss.javaee</groupid> <artifactid>jboss-ejb-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.javaee</groupid> <artifactid>jboss-jacc-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.javaee</groupid> <artifactid>jboss-jca-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.javaee</groupid> <artifactid>jboss-jms-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jpa</groupid> <artifactid>jboss-jpa-deployers</artifactid> </exclusion> <exclusion> <groupid>org.jboss.metadata</groupid> <artifactid>jboss-metadata</artifactid> </exclusion> <exclusion> <groupid>org.jboss.microcontainer</groupid> <artifactid>jboss-kernel</artifactid> </exclusion> <exclusion> <groupid>org.jboss.security</groupid> <artifactid>jbosssx</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ws</groupid> <artifactid>jbossws-spi</artifactid> </exclusion> <exclusion> <groupid>quartz</groupid> <artifactid>quartz</artifactid> </exclusion> <exclusion> <groupid>sun-jaxws</groupid> <artifactid>jaxws-api</artifactid> </exclusion> <exclusion> <groupid>sun-jaxws</groupid> <artifactid>jsr181-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.aspects</groupid> <artifactid>jboss-remoting-aspects</artifactid> </exclusion> <exclusion> <groupid>org.jboss.cluster</groupid> <artifactid>jboss-ha-server-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-common</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-interceptors</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-proxy-impl</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-proxy-spi</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.jboss.remoting</groupid> <artifactid>jboss-remoting</artifactid> <version>2.5.1</version> </dependency> <dependency> <groupid>org.jboss.deployers</groupid> <artifactid>jboss-deployers-core-spi</artifactid> <version>2.0.7.GA</version> </dependency> <dependency> <groupid>org.jboss.deployers</groupid> <artifactid>jboss-deployers-core</artifactid> <version>2.0.7.GA</version> </dependency> <dependency> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-main</artifactid> <version>5.1.0.GA</version> <classifier>client</classifier> <exclusions> <exclusion> <groupid>org.jboss.bootstrap</groupid> <artifactid>jboss-bootstrap</artifactid> </exclusion> <exclusion> <groupid>gnu-getopt</groupid> <artifactid>getopt</artifactid> </exclusion> <exclusion> <groupid>log4j</groupid> <artifactid>log4j</artifactid> </exclusion> <exclusion> <groupid>org.jboss.logbridge</groupid> <artifactid>jboss-logbridge</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-j2se</artifactid> <version>5.1.0.GA</version> <exclusions> <exclusion> <groupid>org.jboss.integration</groupid> <artifactid>jboss-classloading-spi</artifactid> </exclusion> <exclusion> <groupid>apache-xerces</groupid> <artifactid>xml-apis</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-ext-api</artifactid> <version>1.0.0</version> <exclusions> <exclusion> <groupid>org.jboss.javaee</groupid> <artifactid>jboss-ejb-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.metadata</groupid> <artifactid>jboss-metadata</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-server</artifactid> <version>5.1.0.GA</version> <classifier>client</classifier> <exclusions> <exclusion> <groupid>sun-jaxb</groupid> <artifactid>jaxb-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-deployment</artifactid> </exclusion> <exclusion> <groupid>org.jboss.bootstrap</groupid> <artifactid>jboss-bootstrap</artifactid> </exclusion> <exclusion> <groupid>org.jboss.integration</groupid> <artifactid>jboss-deployment-spi</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jpa</groupid> <artifactid>jboss-jpa-deployers</artifactid> </exclusion> <exclusion> <groupid>org.jboss.security</groupid> <artifactid>jbosssx</artifactid> </exclusion> <exclusion> <groupid>log4j</groupid> <artifactid>log4j</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-system-jmx</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-jmx</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-system</artifactid> </exclusion> <exclusion> <groupid>org.jboss.integration</groupid> <artifactid>jboss-transaction-spi</artifactid> </exclusion> <exclusion> <groupid>org.jboss.javaee</groupid> <artifactid>jboss-jacc-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.javaee</groupid> <artifactid>jboss-jms-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ws.native</groupid> <artifactid>jbossws-native-saaj</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ws.native</groupid> <artifactid>jbossws-native-jaxws</artifactid> </exclusion> <exclusion> <groupid>javax.security</groupid> <artifactid>jaas</artifactid> </exclusion> <exclusion> <groupid>org.jboss.javaee</groupid> <artifactid>jboss-jca-api</artifactid> </exclusion> <exclusion> <groupid>bcel</groupid> <artifactid>bcel</artifactid> </exclusion> <exclusion> <groupid>jpl-util</groupid> <artifactid>jpl-util</artifactid> </exclusion> <exclusion> <groupid>jpl-pattern</groupid> <artifactid>jpl-pattern</artifactid> </exclusion> <exclusion> <groupid>org.jboss</groupid> <artifactid>jbossxb</artifactid> </exclusion> <exclusion> <groupid>org.jboss.naming</groupid> <artifactid>jnp-server</artifactid> </exclusion> <exclusion> <groupid>gnu-getopt</groupid> <artifactid>getopt</artifactid> </exclusion> <exclusion> <groupid>org.jboss.metadata</groupid> <artifactid>jboss-metadata</artifactid> </exclusion> <exclusion> <groupid>org.jboss.javaee</groupid> <artifactid>jboss-ejb-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.naming</groupid> <artifactid>jnpserver</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-security</artifactid> <version>1.0.0</version> <classifier>client</classifier> <exclusions> <exclusion> <groupid>org.jboss.aspects</groupid> <artifactid>jboss-current-invocation-aspects</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-interceptors</artifactid> </exclusion> <exclusion> <groupid>org.jboss.security</groupid> <artifactid>jbosssx</artifactid> </exclusion> <exclusion> <groupid>org.jboss.javaee</groupid> <artifactid>jboss-jacc-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-ext-api-impl</artifactid> </exclusion> <exclusion> <groupid>org.jboss.aop</groupid> <artifactid>jboss-aop</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-metadata</artifactid> </exclusion> <exclusion> <groupid>org.jboss.metadata</groupid> <artifactid>jboss-metadata</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.jboss.security</groupid> <artifactid>jbosssx-client</artifactid> <version>2.0.3.SP1</version> </dependency> <dependency> <groupid>org.jboss.deployers</groupid> <artifactid>jboss-deployers-client</artifactid> <version>2.0.7.GA</version> </dependency> <dependency> <groupid>org.jboss.deployers</groupid> <artifactid>jboss-deployers-client-spi</artifactid> <version>2.0.7.GA</version> <exclusions> <exclusion> <groupid>org.jboss.man</groupid> <artifactid>jboss-managed</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-system-jmx</artifactid> <version>5.1.0.GA</version> <classifier>client</classifier> <exclusions> <exclusion> <groupid>apache-xerces</groupid> <artifactid>xml-apis</artifactid> </exclusion> <exclusion> <groupid>org.jboss</groupid> <artifactid>jboss-vfs</artifactid> </exclusion> <exclusion> <groupid>org.jboss</groupid> <artifactid>jbossxb</artifactid> </exclusion> <exclusion> <groupid>org.jboss.deployers</groupid> <artifactid>jboss-deployers-impl</artifactid> </exclusion> <exclusion> <groupid>org.jboss.deployers</groupid> <artifactid>jboss-deployers-structure-spi</artifactid> </exclusion> <exclusion> <groupid>org.jboss.deployers</groupid> <artifactid>jboss-deployers-vfs</artifactid> </exclusion> <exclusion> <groupid>org.jboss.deployers</groupid> <artifactid>jboss-deployers-vfs-spi</artifactid> </exclusion> <exclusion> <groupid>org.jboss.bootstrap</groupid> <artifactid>jboss-bootstrap</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-system</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-jmx</artifactid> </exclusion> <exclusion> <groupid>org.jboss.microcontainer</groupid> <artifactid>jboss-dependency</artifactid> </exclusion> <exclusion> <groupid>org.jboss.microcontainer</groupid> <artifactid>jboss-kernel</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.jboss.slf4j</groupid> <artifactid>slf4j-jboss-logging</artifactid> <version>1.0.2.GA</version> </dependency> <dependency> <groupid>org.jboss.logging</groupid> <artifactid>jboss-logging-jdk</artifactid> <version>2.1.0.GA</version> </dependency> <dependency> <groupid>org.jboss.logging</groupid> <artifactid>jboss-logging-log4j</artifactid> <version>2.1.0.GA</version> <exclusions> <exclusion> <groupid>log4j</groupid> <artifactid>log4j</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.jboss.logging</groupid> <artifactid>jboss-logging-spi</artifactid> <version>2.1.0.GA</version> </dependency> <dependency> <groupid>org.jboss.ejb3</groupid> <artifactid>jboss-ejb3-common</artifactid> <version>1.0.0</version> <classifier>client</classifier> <exclusions> <exclusion> <groupid>org.jboss.microcontainer</groupid> <artifactid>jboss-kernel</artifactid> </exclusion> <exclusion> <groupid>org.jboss.metadata</groupid> <artifactid>jboss-metadata</artifactid> </exclusion> <exclusion> <groupid>org.jboss.deployers</groupid> <artifactid>jboss-deployers-spi</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-server</artifactid> <version>5.1.0.GA</version> <classifier>jmx-invoker-adaptor-client</classifier> <exclusions> <exclusion> <groupid>sun-jaxb</groupid> <artifactid>jabx-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-deployment</artifactid> </exclusion> <exclusion> <groupid>org.jboss.bootstrap</groupid> <artifactid>jboss-bootstrap</artifactid> </exclusion> <exclusion> <groupid>org.jboss.integration</groupid> <artifactid>jboss-deployment-spi</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jpa</groupid> <artifactid>jbopss-jpa-deployers</artifactid> </exclusion> <exclusion> <groupid>org.jboss.security</groupid> <artifactid>jbosssx</artifactid> </exclusion> <exclusion> <groupid>org.jboss.metadata</groupid> <artifactid>jboss-metadata</artifactid> </exclusion> <exclusion> <groupid>log4j</groupid> <artifactid>log4j</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-system-jmx</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-jmx</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-system</artifactid> </exclusion> <exclusion> <groupid>org.jboss.javaee</groupid> <artifactid>jboss-ejb-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-security</artifactid> </exclusion> <exclusion> <groupid>org.jboss.integration</groupid> <artifactid>jboss-transaction-spi</artifactid> </exclusion> <exclusion> <groupid>org.jboss.javaee</groupid> <artifactid>jboss-jacc-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-jms-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ws.native</groupid> <artifactid>jbossws-native-saaj</artifactid> </exclusion> <exclusion> <groupid>org.jboss.ws.native</groupid> <artifactid>jbossws-native-jaxws</artifactid> </exclusion> <exclusion> <groupid>javax.security</groupid> <artifactid>jaas</artifactid> </exclusion> <exclusion> <groupid>org.jboss.javaee</groupid> <artifactid>jboss-jca-api</artifactid> </exclusion> <exclusion> <groupid>bcel</groupid> <artifactid>bcel</artifactid> </exclusion> <exclusion> <groupid>jpl-util</groupid> <artifactid>jpl-util</artifactid> </exclusion> <exclusion> <groupid>jpl-pattern</groupid> <artifactid>jpl-pattern</artifactid> </exclusion> <exclusion> <groupid>org.jboss</groupid> <artifactid>jbossxb</artifactid> </exclusion> <exclusion> <groupid>org.jboss.naming</groupid> <artifactid>jnpserver</artifactid> </exclusion> <exclusion> <groupid>gnu-getopt</groupid> <artifactid>getopt</artifactid> </exclusion> <exclusion> <groupid>sun-jaxb</groupid> <artifactid>jaxb-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jpa</groupid> <artifactid>jboss-jpa-deployers</artifactid> </exclusion> <exclusion> <groupid>org.jboss.javaee</groupid> <artifactid>jboss-jms-api</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-management</artifactid> <version>5.1.0.GA</version> <classifier>jsr77-client</classifier> <exclusions> <exclusion> <groupid>org.jboss.deployers</groupid> <artifactid>jboss-deployers-vfs</artifactid> </exclusion> <exclusion> <groupid>org.jboss.microcontainer</groupid> <artifactid>jboss-kernel</artifactid> </exclusion> <exclusion> <groupid>org.jboss.cl</groupid> <artifactid>jboss-classloading-vfs</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-server</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-system</artifactid> </exclusion> <exclusion> <groupid>org.jboss.cluster</groupid> <artifactid>jboss-ha-server-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.bootstrap</groupid> <artifactid>jboss-bootstrap</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-connector</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-cluster</artifactid> </exclusion> <exclusion> <groupid>apache-xerces</groupid> <artifactid>xml-apis</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-iiop</artifactid> <version>5.1.0.GA</version> <classifier>client</classifier> <exclusions> <exclusion> <groupid>apache-avalon</groupid> <artifactid>avalon-framework</artifactid> </exclusion> <exclusion> <groupid>apache-xerces</groupid> <artifactid>xml-apis</artifactid> </exclusion> <exclusion> <groupid>jacorb</groupid> <artifactid>jacorb</artifactid> </exclusion> <exclusion> <groupid>javax.security</groupid> <artifactid>jaas</artifactid> </exclusion> <exclusion> <groupid>javax.transcation</groupid> <artifactid>jta</artifactid> </exclusion> <exclusion> <groupid>log4j</groupid> <artifactid>log4j</artifactid> </exclusion> <exclusion> <groupid>org.jboss.integration</groupid> <artifactid>jboss-classloading-spi</artifactid> </exclusion> <exclusion> <groupid>org.jboss.integration</groupid> <artifactid>jboss-corba-ots-spi</artifactid> </exclusion> <exclusion> <groupid>org.jboss.integration</groupid> <artifactid>jboss-transaction-spi</artifactid> </exclusion> <exclusion> <groupid>org.jboss.javaee</groupid> <artifactid>jboss-ejb-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-main</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-server</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-security</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-system</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-system-jmx</artifactid> </exclusion> <exclusion> <groupid>org.jboss.metadata</groupid> <artifactid>jboss-metadata</artifactid> </exclusion> <exclusion> <groupid>javax.transaction</groupid> <artifactid>jta</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.jboss.cluster</groupid> <artifactid>jboss-ha-client</artifactid> <version>1.1.1.GA</version> <exclusions> <exclusion> <groupid>org.jboss.aspects</groupid> <artifactid>jboss-remoting-aspects</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-cluster</artifactid> <version>5.1.0.GA</version> <classifier>jboss-ha-legacy-client</classifier> <exclusions> <exclusion> <groupid>log4j</groupid> <artifactid>log4j</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-server</artifactid> </exclusion> <exclusion> <groupid>jgroups</groupid> <artifactid>jgroups</artifactid> </exclusion> <exclusion> <groupid>org.jboss.cluster</groupid> <artifactid>jboss-ha-server-api</artifactid> </exclusion> <exclusion> <groupid>org.jboss.cluster</groupid> <artifactid>jboss-ha-server-cache-spi</artifactid> </exclusion> <exclusion> <groupid>org.jboss.cluster</groupid> <artifactid>jboss-ha-server-jbc</artifactid> </exclusion> <exclusion> <groupid>org.jboss.cluster</groupid> <artifactid>jboss-ha-server-cache-jbc</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-system-jmx</artifactid> </exclusion> <exclusion> <groupid>org.jboss.jbossas</groupid> <artifactid>jboss-as-system</artifactid> </exclusion> <exclusion> <groupid>org.jboss.bootstrap</groupid> <artifactid>jboss-bootstrap</artifactid> </exclusion> <exclusion> <groupid>javax.transaction</groupid> <artifactid>jta</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.slf4j</groupid> <artifactid>slf4j-api</artifactid> <version>1.5.6</version> </dependency> <dependency> <groupid>org.jboss.aop</groupid> <artifactid>jboss-aop</artifactid> <version>2.1.1.GA</version> <classifier>client</classifier> <exclusions> <exclusion> <groupid>apache-xerces</groupid> <artifactid>xml-apis</artifactid> </exclusion> <exclusion> <groupid>org.apache.ant</groupid> <artifactid>ant</artifactid> </exclusion> <exclusion> <groupid>javassist</groupid> <artifactid>javassist</artifactid> </exclusion> <exclusion> <groupid>org.jboss</groupid> <artifactid>jboss-reflect</artifactid> </exclusion> <exclusion> <groupid>qdox</groupid> <artifactid>qdox</artifactid> </exclusion> <exclusion> <groupid>trove</groupid> <artifactid>trove</artifactid> </exclusion> <exclusion> <groupid>log4j</groupid> <artifactid>log4j</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.jboss</groupid> <artifactid>jboss-common-core</artifactid> <version>2.2.14.GA</version> </dependency> <dependency> <groupid>org.jboss.security</groupid> <artifactid>jboss-security-spi</artifactid> <version>2.0.3.SP1</version> </dependency> <dependency> <groupid>org.jboss</groupid> <artifactid>jboss-mdr</artifactid> <version>2.0.1.GA</version> <exclusions> <exclusion> <groupid>org.jboss</groupid> <artifactid>jboss-reflect</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>org.jboss.client</groupid> <artifactid>jboss-client</artifactid> <version>5.1.0.CR1</version> </dependency> <dependency> <groupid>org.apache</groupid> <artifactid>xmlsec</artifactid> <version>1.4.2</version> </dependency> <dependency> <groupid>commons-logging</groupid> <artifactid>commons-logging</artifactid> <version>1.1.0.jboss</version> </dependency> <dependency> <groupid>org.jboss.integration</groupid> <artifactid>jboss-integration</artifactid> <version>5.1.0.GA</version> </dependency> <dependency> <groupid>jboss.messaging</groupid> <artifactid>jboss-messaging</artifactid> <version>1.4.3.GA</version> </dependency> <dependency> <groupid>jboss</groupid> <artifactid>jboss-serialization</artifactid> <version>1.0.3.GA</version> </dependency> <dependency> <groupid>org.hibernate</groupid> <artifactid>ejb3-persistence</artifactid> <version>1.0.2.GA</version> </dependency> <dependency> <groupid>org.jboss.aspects</groupid> <artifactid>jboss-remoting-aspects</artifactid> <version>1.0.2</version> <exclusions> <exclusion> <groupid>org.jboss.aop</groupid> <artifactid>jboss-aop</artifactid> </exclusion> <exclusion> <groupid>org.jboss.microcontainer</groupid> <artifactid>jboss-kernel</artifactid> </exclusion> <exclusion> <groupid>org.jboss.security</groupid> <artifactid>jbosssx</artifactid> </exclusion> </exclusions> </dependency> <dependency> <groupid>javassist</groupid> <artifactid>javassist</artifactid> <version>3.10.0.GA</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactid>maven-assembly-plugin</artifactid> <configuration> <descriptorrefs> <descriptorref>jar-with-dependencies</descriptorref> </descriptorrefs> <appendassemblyid>false</appendassemblyid> <finalname>JBossClientLibraries-5.10-full</finalname> </configuration> <executions> <execution> <id>make-my-jar-with-dependencies</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
Даже здесь все не так просто. (Если кто-то знает лучший способ сделать следующий раздел, пожалуйста, скажите мне.)
Мы должны взять на себя «JBossClientLibraries-5,10-full.jar» и редактировать его , чтобы удалить все из «/ Maven META-INF» папки , кроме
ваших деталей артефакт. Так что в моем примере будет удалено все, кроме папки «sparg.tim» и ее содержимого.
Теперь мы можем установить это в хранилище как артефакт.
Создать Maven EJB Project
После этой начальной настройки все становится так, как должно быть — просто!
Новый проект -> Модуль Maven EJB:
Не забудьте установить версию Java EE на 5, так как JBoss еще не поддерживает EE 6.
Перейти файл -> новый -> Session Bean:
Создать бизнес-метод:
Класс HelloBean:
package sparg.tim.simpleejb; import javax.ejb.Stateless; /** * * @author tsparg */ @Stateless public class HelloBean implements HelloBeanRemote { public String getMessage() { return "Hello Netbeans"; } }
Класс HelloBeanRemote:
package sparg.tim.simpleejb; import javax.ejb.Remote; /** * * @author tsparg */ @Remote public interface HelloBeanRemote { String getMessage(); }
Щелкните правой кнопкой мыши свой проект -> свойства -> запустить и выберите сервер приложений JBoss.
Теперь вы можете запустить проект EJB.
Создать приложение на платформе NetBeans
Файл -> Новый проект -> Maven -> Приложение Maven NetBeans:
Создайте проект модуля с приложением (в моем примере — JBossClient-core).
Перейдите к модулю ядра и добавьте зависимость — это будет артефакт, который мы создали в самом начале.
Проделайте ту же процедуру с модулем EJB, который вы только что создали, на этот раз вы сможете просто щелкнуть вкладку «Открыть проекты» и выбрать ее там.
Создайте новый TopComponent, новый -> Окно.
Сделайте это «Открыть при запуске приложения», в позиции редактора:
Я позвонил моему HelloTopComponent.
Перетащите кнопку и метку на экран
Дважды щелкните кнопку, чтобы получить ее ActionHandler.
Соответствующий код выглядит следующим образом:
private void btnGetMessageActionPerformed(java.awt.event.ActionEvent evt) { Properties props = new Properties(); Properties properties = new Properties(); properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); properties.put(Context.PROVIDER_URL, "127.0.0.1:1099"); InitialContext ctx; try { ctx = new InitialContext(properties); HelloBeanRemote remote = (HelloBeanRemote) ctx.lookup("HelloBean/remote-sparg.tim.simplejb.HelloBeanRemote"); lblOutput.setText(remote.getMessage()); System.out.println(remote.getMessage()); } catch (NamingException ex) { Exceptions.printStackTrace(ex); } }
Важно отметить, что эта строка:
HelloBeanRemote remote = (HelloBeanRemote) ctx.lookup( "HelloBean/remote-sparg.tim.simplejb.HelloBeanRemote");
… скорее всего будет выглядеть по-другому в вашей системе.
Теперь, если вам удалось сделать это правильно, и вы
проявили большое терпение — когда вы нажмете кнопку «getMessage», вы получите этот ой такой приятный экран:
Хотя мне потребовалось гораздо больше времени, чтобы понять, чем я мог бы предположить, но я очень рад, что все работает.
Было бы неплохо, чтобы GlassFish работал в той роли, которую сейчас выполняет JBoss — исключительно из-за более тесной интеграции между GlassFish и сообществами NetBeans.