Verpackung war-Datei in einer EAR-so dass der KRIEG Abhängigkeiten verfügbar sind
Ich bin das hinzufügen eines KRIEGES Modul [web-app], um eine bestehende OHR-Anwendung [my-ear-app], die derzeit enthält EJB-Module nur. Der KRIEG-Modul ist eine RESTful-app, geschrieben in Spring MVC 3.0.
Die apps werden von maven 2.x-apps.
Wenn ich die EAR-app auf WebLogic 10.3.2 es nicht zu veröffentlichen, die KRIEG-Modul, das ich Hinzugefügt.
Ich bin mit dieser in WebLogic 10.3.2 von Eclipse Helios.
Ich habe versucht, die app-Sicherung Kriegspfad Konfiguration in der pom aber das hat nicht funktioniert. Ich schaute auf die skinny-wars-Ansatz. Ich habe links zu diesen relevanten Materials am Ende der post.
Ich kann nicht scheinen, um Vergangenheit, die fehlenden oxm lib Fehler NoClassDefFoundError:org/springframework/oxm/Marshaller.
Den Fehler geschieht, wenn ein Versuch gemacht wird, veröffentlichen Sie die EAR-app auf die WL-app-server.
Veröffentlichten OHR setzt wie:
- META-INF\application.xml
- META-INF\MANIFEST.MF
- META-INF\weblogic-application.xml
- my-web-app.Krieg
- .beabuild.txt
Veröffentlichten KRIEG-Modul aus dem OHR, Extrakte aus:
- WEB-INF\lib\jstl-1.2.jar
- WEB-INF\lib\spring-webmvc-3.0.5.RELEASE.jar
Zum Vergleich, die maven verpackt KRIEG von der web-app-Extrakte als:
- META-INF\MANIFEST.MF
- WEB-INF\classes
- WEB-INF\jsp
- WEB-INF\lib (hat alle KRIEG Abhängigkeiten)
- WEB-INF\spring
- web.xml
Dies ist ein Teil der error-trace:
java.lang.Exception: Exception received from deployment driver. See Error Log view for more detail.
at oracle.eclipse.tools.weblogic.server.internal.WlsJ2EEDeploymentHelper$DeploymentProgressListener.watch(WlsJ2EEDeploymentHelper.java:1559)
at oracle.eclipse.tools.weblogic.server.internal.WlsJ2EEDeploymentHelper.deploy (WlsJ2EEDeploymentHelper.java:484)
at oracle.eclipse.tools.weblogic.server.internal.WeblogicServerBehaviour.publishWeblogicModules (WeblogicServerBehaviour.java:1419)
at oracle.eclipse.tools.weblogic.server.internal.WeblogicServerBehaviour.publishToServer (WeblogicServerBehaviour.java:861)
at oracle.eclipse.tools.weblogic.server.internal.WeblogicServerBehaviour.publishOnce (WeblogicServerBehaviour.java:655)
at oracle.eclipse.tools.weblogic.server.internal.WeblogicServerBehaviour.publish (WeblogicServerBehaviour.java:522)
at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish (ServerBehaviourDelegate.java:775)
at org.eclipse.wst.server.core.internal.Server.publishImpl(Server.java:2888)
at org.eclipse.wst.server.core.internal.Server$PublishJob.run(Server.java:337)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) Caused by: weblogic.application.ModuleException: [HTTP:101216]Servlet: "mywebapp" failed to preload on startup in Web application: "mywebapp". java.lang.NoClassDefFoundError: org/springframework/oxm/Marshaller
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:389)
at java.lang.Class.getDeclaredConstructors(Class.java:1836)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determinCCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:227)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:930)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInsance (AbstractAutowireCapableBeanFactory.java:903)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:485)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject (AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactor.java:288)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:580)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:425)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext (FrameworkServlet.java:442)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext (FrameworkServlet.java:458)
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext (FrameworkServlet.java:339)
at org.springframework.web.servlet.FrameworkServlet.initServletBean (FrameworkServlet.java:306)
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
at javax.servlet.GenericServlet.init(GenericServlet.java:241)
at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run (StubSecurityHelper.java:283)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.StubSecurityHelper.createServlet (StubSecurityHelper.java:64)
at weblogic.servlet.internal.StubLifecycleHelper.createOneInstance (StubLifecycleHelper.java:58)
at weblogic.servlet.internal.StubLifecycleHelper.<init>(StubLifecycleHelper.java:48)
at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:531)
at weblogic.servlet.internal.WebAppServletContext.preloadServlet (WebAppServletContext.java:1915)
at weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup (WebAppServletContext.java:1889)
at weblogic.servlet.internal.WebAppServletContext.preloadResources (WebAppServletContext.java:1807)
at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3045)
at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1397)
at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:460)
at weblogic.application.internal.flow.ModuleStateDriver$3.next (ModuleStateDriver.java:425)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83)
at weblogic.application.internal.flow.ModuleStateDriver.start (ModuleStateDriver.java:119)
at weblogic.application.internal.flow.ScopedModuleDriver.start (ScopedModuleDriver.java:200)
at weblogic.application.internal.flow.ModuleListenerInvoker.start (ModuleListenerInvoker.java:247)
at weblogic.application.internal.flow.ModuleStateDriver$3.next (ModuleStateDriver.java:425)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83)
at weblogic.application.internal.flow.ModuleStateDriver.start (ModuleStateDriver.java:119)
at weblogic.application.internal.flow.StartModulesFlow.activate (StartModulesFlow.java:27)
at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:1267)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83)
at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:409)
at weblogic.application.internal.EarDeployment.activate(EarDeployment.java:54)
...
Unten ist der KRIEG Moduls org.eclipse.wst.common.Komponente Datei, es hat zwei EJB-Abhängigkeiten:
<?xml version="1.0" encoding="UTF-8"?> <project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="my-web-app">
<wb-resource deploy-path="/" source-path="/src/main/webapp"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/java"/>
<dependent-module deploy-path="/WEB-INF/lib" handle="module:/resource/ejb-module-1/ejb-module1">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module deploy-path="/WEB-INF/lib" handle="module:/resource/ejb-module-2/ejb-module2">
<dependency-type>uses</dependency-type>
</dependent-module>
<property name="java-output-path" value="/my-web-app/target/classes"/>
<property name="context-root" value="my-web-app"/>
</wb-module>
Unten ist das EAR-Modul: org.eclipse.wst.common.Komponente Datei. Das EAR-Modul das web-Modul-Abhängigkeit sowie viele EJB-Abhängigkeiten. Das OHR org.eclipse.wst.common.Komponente Datei zeigt nur zwei EJB-Abhängigkeiten machen es leichter zu Lesen. Die erste EJB-Abhängigkeit type ist EJB-Module auf der Projekt-root-Ebene und die zweite EJB Abhängigkeit type ist EJB-Module geschrieben, um den lib/Ordner.
<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="my-ejb-module">
<wb-resource deploy-path="/" source-path="/EarContent"/>
<dependent-module archiveName="ejb-module-A.jar" deploy-path="/" handle="module:/resource/ejbmoduleA/ejbmoduleA">
<dependent-object/>
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module archiveName="ejb-module-B-SNAPSHOT.jar" deploy-path="/lib" handle="module:/resource/ejb-module-B-SNAPSHOT/ejb-module-B-SNAPSHOT">
<dependent-object/>
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module archiveName="my-web-app.war" deploy-path="/" handle="module:/resource/my-web-app/my-web-app">
<dependent-object/>
<dependency-type>uses</dependency-type>
</dependent-module>
</wb-module>
Unten ist die pom.xml Datei für die EAR-app:
<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.ear.app</groupId>
<artifactId>my-ear-app</artifactId>
<packaging>ear</packaging>
<version>1.0.0</version>
</properties>
<spring.version>3.0.5.RELEASE</spring.version>
<slf4j.version>1.6.1</slf4j.version>
</properties>
<dependencies>
<dependency>
<groupId>com.ejb.module</groupId>
<artifactId>ejb-module-W</artifactId>
<version>1.0.0</version>
<type>ejb</type>
</dependency>
<dependency>
<groupId>com.ejb.module</groupId>
<artifactId>ejb-module-X</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>ejb</type>
</dependency>
<dependency>
<groupId>com.ejb.module</groupId>
<artifactId>ejb-module-Y</artifactId>
<version>1.0.0</version>
<type>ejb</type>
</dependency>
<dependency>
<groupId>com.ejb.module</groupId>
<artifactId>ejb-module-Z</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>ejb</type>
</dependency>
<dependency>
<groupId>com.web.app</groupId>
<artifactId>my-web-app</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>war</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.4</version>
<configuration>
<generateApplicationXml>false</generateApplicationXml>
<earSourceDirectory>${basedir}/src/main/application</earSourceDirectory>
<earSourceIncludes>META-INF/**</earSourceIncludes>
<defaultJavaBundleDir>APP-INF/lib</defaultJavaBundleDir>
<version>5</version>
<modules> <jarModule>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<includeInApplicationXml>false</includeInApplicationXml>
</jarModule>
<jarModule>
<groupId>com.ejb.module</groupId>
<artifactId>ejb-module-M</artifactId>
<includeInApplicationXml>false</includeInApplicationXml>
</jarModule>
<jarModule>
<groupId>com.ejb.module</groupId>
<artifactId>ejb-module-N</artifactId>
<includeInApplicationXml>false</includeInApplicationXml>
</jarModule>
<jarModule>
<groupId>com.ejb.module</groupId>
<artifactId>ejb-module-O</artifactId>
<includeInApplicationXml>false</includeInApplicationXml>
</jarModule>
<jarModule>
<groupId>com.ejb.module</groupId>
<artifactId>ejb-module-P</artifactId>
<includeInApplicationXml>false</includeInApplicationXml>
</jarModule>
<jarModule>
<groupId>org.codehaus.castor</groupId>
<artifactId>castor-core</artifactId>
<includeInApplicationXml>false</includeInApplicationXml>
</jarModule>
<jarModule>
<groupId>org.codehaus.castor</groupId>
<artifactId>castor-xml</artifactId>
<includeInApplicationXml>false</includeInApplicationXml>
</jarModule>
<jarModule>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<includeInApplicationXml>false</includeInApplicationXml>
</jarModule>
</modules>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
<finalName>MY EAR APP</finalName>
</build>
Dies ist die web-Moduls pom.xml Datei:
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.web.app</groupId>
<artifactId>my-web-app</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>war</packaging>
</properties>
<spring.version>3.0.5.RELEASE</spring.version>
<slf4j.version>1.6.1</slf4j.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${spring.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.0.0.GA</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>com.ejb.module</groupId>
<artifactId>ejb-module-1</artifactId>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.ejb.module</groupId>
<artifactId>ejb-module-2</artifactId>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>install</id>
<phase>install</phase>
<goals>
<goal>sources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
Referenzen:
- http://docs.codehaus.org/display/MAVENUSER/Solving++Skinny+Wars+problem
- Maven-KRIEG-Abhängigkeit
Dieser ist ähnlich wie mein problem, und ich versuchte, es zu benutzen, lösen mein Problem aber ohne Erfolg. Es ist ein Beispiel für die Verwendung von warpath aus appfuse.
Ich bin immer noch verblüfft von dieser so bin Rückverfolgung änderungen, die ich an die EAR-app, wenn Sie den KRIEG. Zuerst habe ich rechts klicken Sie auf project in Eclipse Helios und wählen Sie Eigenschaften -> - Bereitstellung Baugruppe-und dann wähle ich Hinzufügen... -> Projekt und aus der Liste der Projekte angezeigt, in dem Hinzufügen eines Projekt-Referenz-dialog wähle ich meine-web-app-Projekt. Dann füge ich das kriegsprojekt der Abhängigkeit in der pom. Ich bekomme immer noch dieselbe fehlt oxm.Marshaller Fehler.
Wenn ich die oxm Abhängigkeit zu einer EJB-Modul und alles ist ok. So versuchen, herauszufinden, wie hinzufügen, um es zu KRIEG und Abhängigkeit abgeholt OHR bereitstellen. Ich bin wieder auf der Suche auf skinny-Kriege-Zeug.
InformationsquelleAutor striker77 | 2011-03-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, org.springframework.oxm.Marshaller ist nicht Teil des spring-webmvc-3.0.5.RELEASE.jar. Ich bin nicht vertraut mit webmvc oder seine Abhängigkeiten, aber vielleicht spring-oxm-x.y.z.jar ist einer der deps und muss daher aufgenommen werden in WEB-INF/lib?
Grüße,
DagR.
@DagR, deutet in seiner Antwort, das Problem ist mehr straight-forward, dass ich framing es. Es war nur eine Frage der OHR-Verpackung fehlt der spring-oxm-Glas. Ich Hinzugefügt und es funktionierte. Aber ich habe noch ein Problem, nämlich, dass ich hinzufügen kann, das fehlende Glas zu einem der abhängigen EJB-Module und alles ist gut, aber wenn ich hinzufügen, dass es entweder das web-Modul pom oder das OHR der pom wird es nicht abgeholt. Wer weiß, warum das so ist?
Das problem war mit der Sonatype maven-eclipse-plugin. Das plugin Fehler beim bereitstellen der Abhängigkeiten für das web-Projekt. Bereitstellen, um das Ziel von weblogic server mit einem Skript gearbeitet, ok. Bin umgestiegen auf eclipse-jee-3.6.2 und die Bereitstellung fein gearbeitet.
InformationsquelleAutor DagR