Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Распределенный проект, несколько модулей и серверов приложений 
:(
    Опции темы
En_t_end
Дата 14.6.2011, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Здравствуйте,
Мне необходимо создать каркас сложной системы, части которой будут развернуты на разных серверах приложений.
Предполагается, что в состав системы войдут:
  •  Веб-приложение (сервер приложений A)
  •  Enterprise-клиент (десктопное приложение)
  •  EJB-модуль (основная логика) (сервер приложений B)
  •  EJB-модуль (подсистема) (сервер приложений C)
Декстопный клиент и веб-приложение пользуются методами бинов из EJB-модуля с основной логикой.
В свою очередь в некоторых методах этих бинов вызываются методы бинов EJB-модуля подсистемы.
Понятно, что все бины должны иметь Remote интерфейсы и все это хозяйство должно работать через RMI.

Я попытался отразить поведение этой большой системы в маленьком тестовом проекте суть которого - посчитать сумму двух введенных пользователем чисел в форму веб-приложения. Веб-приложение, в свою очередь, должно трогать EJB-модуль, который трогает другой EJB-модуль. О декстопном приложении пока забудем.
У меня есть 2 сервера приложений:
  •  GlassFish на виртуальной машине A
  •  GlassFish на виртуальной машине B
И 4 проекта (maven):
  •  test_webapp Java EE 6 Webapp - веб-приложение (хочу развернуть на сервере A)
  •  test_core Java EE 6 EJB - основная логика (хочу развернуть на сервере A)
  •  test_subsystem Java EE 6 EJB - подсистема (хочу развернуть на сервере B)
  •  test_commonlib JAR - Remote интерфейсы всех бинов core и subsystem, библиотека общих объектов всех модулей (подключается как библиотека к этим трем проектам)
Webapp
Здесь все просто, форма с 2 полями для ввода. Кнопка "+" вызывает метод Managed Bean'а TestManagedBean addAandB который должен установить сумму тех самых двух полей в поле c.
test_webapp index.xhtml:
Код

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h:form id="f1">
            <h:panelGrid columns="2">
                <h:outputLabel for="a" value="a"/>
                <h:inputText id="a" value="#{testManagedBean.a}"/>
                <h:outputLabel for="b" value="b"/>
                <h:inputText id="b" value="#{testManagedBean.b}"/>
                <h:commandButton
                    type="submit"
                    value="+"
                    action="#{testManagedBean.addAandB}"/>
                <h:outputText value="#{testManagedBean.c}"/>
        </h:panelGrid>
    </h:form>
    </h:body>
</html>


ManagedBean в методе addAandB которого вызывается метод инжектированного бина (по Remote интерфейсу) TestCore.
test_webapp TestManagedBean.java
Код

package com.asu.test_webapp;

import com.asu.test_common.SomeClass;
import com.asu.test_common.TestCoreRemote;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionListener;

@ManagedBean
@ViewScoped
public class TestManagedBean {

    private int a;
    private int b;
    private int c;

   @EJB(beanName="TestCore/remote")
    private TestCoreRemote testCore;

    /** Creates a new instance of TestManagedBean */
    public TestManagedBean() {
    }

    public int getA() {
        return a; сервер приложений A на виртуальной машине V
    }

    public void setA(int a) {
        this.a = a;
    }

    public int getB() {
        return b;
    }

    public void setB(int b) {
        this.b = b;
    }

    public int getC() {
        return c;
    }

    public void setC(int c) {
        this.c = c;
    }

    public void addAandB() {
        c = testCore.add(a, b, new SomeClass());
    }
}


Core EJB
Тот самый бин, который инжектировался в бин веб-приложения. Здесь, в свою очередь, инжектируется бин из test_subsystem.
test_core TestCoreBean.java:
Код

package com.asu.test_core;

import com.asu.test_commonlib.SomeClass;
import com.asu.test_commonlib.TestCoreRemote;
import com.asu.test_commonlib.TestSubsystemRemote;
import javax.ejb.Stateless;
import javax.ejb.EJB;

@Stateless
public class TestCoreBean implements TestCoreRemote {

   @EJB(beanName="TestSubsystem/remote")
    private TestSubsystemRemote testSubsystem;

    @Override
    public int add(int a, int b, SomeClass sc) {
        return testSubsystem.add(a, b);
    }

}


Subsystem EJB
Конец цепочки. Наконец-то считаем сумму.
test_core TestSubsystemBean.java:
Код

package com.asu.test_subsystem;

import com.asu.test_common.TestSubsystemRemote;
import javax.ejb.Stateless;

@Stateless
public class TestSubsystemBean implements TestSubsystemRemote {

    @Override
    public int add(int a, int b) {
        return a + b;
    }

}


Commonlib JAR
Далее привожу код всех интерфейсов и общих классов, определенных в библиотеке test_commonlib.
test_commonlib TestCoreInterface.java:
Код

package com.asu.test_commonlib;

public interface TestCoreInterface {
    public int add(int a, int b, SomeClass sc);
}

test_commonlib TestCoreRemote.java:
Код

package com.asu.test_commonlib;

import javax.ejb.Remote;

@Remote
public interface TestCoreRemote extends TestCoreInterface {

}

test_commonlib TestSubsystemInterface.java:
Код

package com.asu.test_commonlib;

public interface TestSubsystemInterface {
    public int add(int a, int b);
}

test_commonlib TestSubsystemRemote.java:
Код

package com.asu.test_commonlib;

import javax.ejb.Remote;

@Remote
public interface TestSubsystemRemote extends TestSubsystemInterface {

}

test_commonlib SomeClass.java:
Код

package com.asu.test_commonlib;

public class SomeClass {
    int a, b;
    String c;
    double d;
}



Проблема
В pom всех проектов добавил в зависимости test_commonlib.

Пытаюсь деплоить test_core, получаю такую вот ошибку:
Код

[#|2011-06-14T19:12:56.755+0000|WARNING|glassfish3.0.1|javax.enterprise.system.tools.deployment.org.glassfish.deployment.common|_ThreadID=24;_ThreadName=Thread-1;|Error in annotation processing: java.lang.NoClassDefFoundError: com/asu/test_commonlib/TestCoreRemote|#]

[#|2011-06-14T19:12:56.755+0000|SEVERE|glassfish3.0.1|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=24;_ThreadName=Thread-1;|Exception while deploying the app
java.lang.IllegalArgumentException: Invalid ejb jar [test_core]: it contains zero ejb.
Note:
1. A valid ejb jar requires at least one session, entity (1.x/2.x style), or message-driven bean.
2. EJB3+ entity beans (@Entity) are POJOs and please package them as library jar.
3. If the jar file contains valid EJBs which are annotated with EJB component level annotations (@Stateless, @Stateful, @MessageDriven, @Singleton), please check server.log to see whether the annotations were processed properly.
        at com.sun.enterprise.deployment.util.EjbBundleValidator.accept(EjbBundleValidator.java:72)
        at com.sun.enterprise.deployment.util.ApplicationValidator.accept(ApplicationValidator.java:124)
        at com.sun.enterprise.deployment.EjbBundleDescriptor.visit(EjbBundleDescriptor.java:722)
        at com.sun.enterprise.deployment.Application.visit(Application.java:1744)
        at com.sun.enterprise.deployment.archivist.ApplicationFactory.openArchive(ApplicationFactory.java:177)
        at org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:162)
        at org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:79)
        at com.sun.enterprise.v3.server.ApplicationLifecycle.loadDeployer(ApplicationLifecycle.java:612)
        at com.sun.enterprise.v3.server.ApplicationLifecycle.setupContainerInfos(ApplicationLifecycle.java:554)
        at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:262)
        at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183)
        at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1176)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224)
        at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:365)
        at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:204)
        at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166)
        at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100)
        at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:245)
        at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
        at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
        at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
        at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
        at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
        at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
        at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
        at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
        at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
        at java.lang.Thread.run(Thread.java:662)
|#]


Извиняюсь, что так много, сокращал как мог. Очень надеюсь на помощь.
Спасибо.

Добавлено @ 22:21
На всякий случай привожу pom для test_core:
Код

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         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>com.asu</groupId>
    <artifactId>test_core</artifactId>
    <packaging>ejb</packaging>
    <version>1.0</version>
    <name>test_core Java EE 6 EJB</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>com.asu</groupId>
            <artifactId>test_commonlib</artifactId>
            <version>1.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.2</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <repositories>
        <repository>
            <id>java.net2</id>
            <name>Java.Net Maven2 Repository, hosts the javaee-api dependency</name>
            <url>http://download.java.net/maven/2</url>
        </repository>
    </repositories>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ejb-plugin</artifactId>
                <version>2.1</version>
                <configuration>
                    <ejbVersion>3.1</ejbVersion>
                </configuration>
            </plugin>
        </plugins>
        <finalName>test_core</finalName>
    </build>
    <profiles>
        <profile>
            <id>endorsed</id>
            <activation>
                <property>
                    <name>sun.boot.class.path</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>2.0.2</version>
                        <configuration>
                            <!-- javaee6 contains upgrades of APIs contained within the JDK itself.
                                 As such these need to be placed on the bootclasspath, rather than classpath of the
                                 compiler.
                                 If you don't make use of these new updated API, you can delete the profile.
                                 On non-SUN jdk, you will need to create a similar profile for your jdk, with the similar property as sun.boot.class.path in Sun's JDK.-->
                            <compilerArguments>
                                <bootclasspath>${settings.localRepository}/javax/javaee-endorsed-api/6.0/javaee-endorsed-api-6.0.jar${path.separator}${sun.boot.class.path}</bootclasspath>
                            </compilerArguments>
                        </configuration>
                        <dependencies>
                            <dependency>
                                <groupId>javax</groupId>
                                <artifactId>javaee-endorsed-api</artifactId>
                                <version>6.0</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
    <properties>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
    </properties>
</project>


А также pom для test_commonlib:
Код

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  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>com.asu</groupId>
  <artifactId>test_commonlib</artifactId>
  <packaging>jar</packaging>
  <version>1.0</version>
  <name>test_commonlib</name>
  <url>http://maven.apache.org</url>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.2</version>
      <scope>test</scope>
    </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>

  </dependencies>
    <properties>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>


Это сообщение отредактировал(а) En_t_end - 14.6.2011, 22:36
PM MAIL ICQ Skype GTalk Jabber   Вверх
Stolzen
Дата 15.6.2011, 04:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 3
Всего: 48



А вы в понмиках явно родителей и модули не указываете? Не нашел. Я вот так делаю разбивку по проектам в мэйвене:

Главный пом:
Код

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>mavenproject2</groupId>
  <artifactId>mavenproject2</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>mavenproject2 Maven Enterprise Application</name>
  <modules>
    <module>mavenproject2-ear</module>
    <module>mavenproject2-web</module>
    <module>mavenproject2-ejb</module>
  </modules>
</project>


Дочерний пом:
Код

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>mavenproject2</groupId>
    <artifactId>mavenproject2-ejb</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>ejb</packaging>

    <name>mavenproject2-ejb EJB</name>   
    <parent>
        <artifactId>mavenproject2</artifactId>
        <groupId>mavenproject2</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <!-- вырезано -->
</project>


И другий дочерний пом с зависимостью от первого модуля:

Код

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>mavenproject2</groupId>
    <artifactId>mavenproject2-web</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    
    <parent>
        <artifactId>mavenproject2</artifactId>
        <groupId>mavenproject2</groupId>
      <version>1.0-SNAPSHOT</version>
    </parent>

    <name>mavenproject2-web Web App</name>

    <dependencies>
         <dependency>
            <groupId>mavenproject2</groupId>
            <artifactId>mavenproject2-ejb</artifactId>
            <version>1.0-SNAPSHOT</version>
            <type>ejb</type>
        </dependency>
      </dependencies>

    <!-- вырезано -->
</project>


Нетбинс может генерировать такую разбивку по проектам, если в нем выбрать в качестве нового проекта "Maven Enterprise Application" (хотя немного чистить и править помники все же приходится после генерации). Правда, имхо, работать с maven проектами в NetBeans не так удобно, как в eclipse + m2eclipse.

Но я отошел от темы. 

Далее, судя по описанию ошибки, вы пытаетесь задеплоить jar без Enterprise бинов внутри. Хотя странно, вы же определяете класс как @Stateless. 
Если посмотреть стэктрейс ошибки, то там пишут
Цитата

3. If the jar file contains valid EJBs which are annotated with EJB component level annotations (@Stateless, @Stateful, 
@MessageDriven, @Singleton), please check server.log to see whether the annotations were processed properly.


Значит, посмотрите файл server.log (обычно в glassfish/domains/domain1). Что там пишут?



--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
En_t_end
Дата 15.6.2011, 05:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Цитата(Stolzen @  15.6.2011,  08:03 Найти цитируемый пост)
Нетбинс может генерировать такую разбивку по проектам, если в нем выбрать в качестве нового проекта "Maven Enterprise Application" (хотя немного чистить и править помники все же приходится после генерации). Правда, имхо, работать с maven проектами в NetBeans не так удобно, как в eclipse + m2eclipse.

Ок, это будет работать. Но можно ли в этом случае деплоить части проекта на разные сервера приложений ?

Цитата(Stolzen @  15.6.2011,  08:03 Найти цитируемый пост)
Значит, посмотрите файл server.log (обычно в glassfish/domains/domain1). Что там пишут?

Та ошибка, я её как раз из лога достал smile 

Это сообщение отредактировал(а) En_t_end - 15.6.2011, 05:13
PM MAIL ICQ Skype GTalk Jabber   Вверх
En_t_end
Дата 15.6.2011, 05:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Я думаю у меня такая же проблема, как здесь http://www.coderanch.com/t/510651/EJB-JEE/...b-ejb-jar-doesn
Но там она без решения.

PM MAIL ICQ Skype GTalk Jabber   Вверх
dobrolub
Дата 15.6.2011, 05:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 4
Всего: 16



http://netbeans.org/bugzilla/show_bug.cgi?id=188744

попробуй деплоить с NB7
PM   Вверх
En_t_end
Дата 15.6.2011, 07:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Цитата(dobrolub @  15.6.2011,  09:55 Найти цитируемый пост)
попробуй деплоить с NB7

Тоже самое
PM MAIL ICQ Skype GTalk Jabber   Вверх
Stolzen
Дата 15.6.2011, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 3
Всего: 48



Цитата(En_t_end @  15.6.2011,  06:13 Найти цитируемый пост)
Ок, это будет работать. Но можно ли в этом случае деплоить части проекта на разные сервера приложений ?

Да, конечно, будет. Только деплоить нужно будет не целиком ear, а отдельные jar-файлы с вашими ejb. 
И если выбирать в качестве шаблона проект, сгененированный нетбинсом, то в главный помник нужно будет еще добавить модуль со вторым ejb проектом (хотя это и так, я думаю, понятно).

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


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
En_t_end
Дата 15.6.2011, 07:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



О, я посмотрел на содержимое test_core.jar. В нем нет test_commonlib. Так что, теперь понятно откуда ноги растут.
Как можно в maven подключить библиотеку к проекту, чтобы она упаковалась вместе с ним ?

Это сообщение отредактировал(а) En_t_end - 15.6.2011, 07:26
PM MAIL ICQ Skype GTalk Jabber   Вверх
Stolzen
Дата 15.6.2011, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 3
Всего: 48



Цитата(En_t_end @  15.6.2011,  08:26 Найти цитируемый пост)
Как можно в maven подключить библиотеку к проекту, чтобы она упаковалась вместе с ним ?

Добавить maven-dependency-plugin
Код

      <plugin>
       <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/target/lib</outputDirectory>
            </configuration>
          </execution>
        </executions>
    </plugin>


И запускать mvn package - все будет копироваться в lib



Это сообщение отредактировал(а) Stolzen - 15.6.2011, 07:48


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
Stolzen
Дата 15.6.2011, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 3
Всего: 48



Вот тут http://maven.apache.org/plugins/maven-depe...ugin/usage.html можно глянуть подробнее


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
En_t_end
Дата 15.6.2011, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Stolzen
Спасибо, получилось упаковать jar в ejb-модуль, он даже добавился в ClassPath. Но оказалось, что начиная с GlassFish v3, в целях безопасности, jar'ы внутри ejb-модулей игнорируются. Подтверждение не могу предоставить, потерял ссылку.
Как решение, ваш вариант с ear действительно работает.
PM MAIL ICQ Skype GTalk Jabber   Вверх
Stolzen
Дата 16.6.2011, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 3
Всего: 48



En_t_end
Пожалуйста. Ну а самая главная проблема-то побеждена? 


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
COVD
Дата 17.6.2011, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Если я правильно понял, то проблема в том, что проект один, "Распределенный проект". Любое изменение влечет за собой перекомпиляцию всего. Стандартной альтернативой является SOA или система, в которой независимые компоненты обмениваются сообщениями. В этом случае система остается распределенной. В систему входит много приложений. Каждому приложению соответствует один проект. Проекты не связаны между собой. Правильно ли я понял?  Хотелось бы за деревьями лес увидеть.

Это сообщение отредактировал(а) COVD - 18.6.2011, 04:14
PM MAIL   Вверх
kkorsakoff
Дата 17.6.2011, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 6
Всего: 14



Кстати glassfish 3 позволяет работать по старому, когда jar видны.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1006 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.