2015-03-25 2 views
1

Пожалуйста, помогите мне устранить следующую ошибку при развертывании войны в Apache Karaf. Я использую maven для создания файла войны. Ниже представлен pom.xmlРазвертывание Spring webapp на Apache Karaf 4.0.0.M2

<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.test</groupId> 
    <artifactId>MyApp</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>MyApp Maven Webapp</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
     <maven.compiler.target>1.8</maven.compiler.target> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <springframework.version>4.0.6.RELEASE</springframework.version> 
     <servlet.version>3.1.0</servlet.version> 
     <hibernate.version>4.3.8.Final</hibernate.version> 
     <commons.version>1.4.1</commons.version> 
     <mysql.version>5.1.34</mysql.version> 
     <c3p0.version>0.9.1.2</c3p0.version> 

    </properties> 

    <dependencies> 

     <dependency> 
      <groupId>org.codehaus.jackson</groupId> 
      <artifactId>jackson-mapper-asl</artifactId> 
      <version>1.9.5</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-validator</groupId> 
      <artifactId>commons-validator</artifactId> 
      <version>${commons.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>${servlet.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>${springframework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${springframework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>${springframework.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>c3p0</groupId> 
      <artifactId>c3p0</artifactId> 
      <version>${c3p0.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>${mysql.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.activemq</groupId> 
      <artifactId>activemq-core</artifactId> 
      <version>5.7.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-lang3</artifactId> 
      <version>3.3.2</version> 
     </dependency> 

     <dependency> 
      <groupId>fop</groupId> 
      <artifactId>fop</artifactId> 
      <version>0.20.5</version> 
     </dependency> 

     <dependency> 
      <groupId>net.sf.jtidy</groupId> 
      <artifactId>jtidy</artifactId> 
      <version>r938</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-io</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>2.4</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <finalName>MyApp</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>${maven.compiler.source}</source> 
        <target>${maven.compiler.target}</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

Я могу построить войну, чтобы успешно ее развернуть в tomcat. Но это не удается в Карафе. Ниже приведена консоль karaf. Помогите решить эту проблему.

[email protected]()> bundle:install -s "webbundle:file:///D:/MyApp.war?Web-ContextPath=/MyApp" 
Bundle IDs: 
Error executing command: Error installing bundles: 
     Unable to install bundle webbundle:file:///D:/MyApp.war?Web-ContextPath=/MyApp 
[email protected]()> log:display 
2015-03-25 16:48:33,439 | ERROR | nsole user karaf | ShellUtil      | 41 - org.apache.karaf.shell.core - 4. 
0.0.M2 | Exception caught while executing command 
org.apache.karaf.shell.support.MultiException: Error installing bundles: 
     Unable to install bundle webbundle:file:///D:/MyApp.war?Web-ContextPath=/MyApp 
     at org.apache.karaf.shell.support.MultiException.throwIf(MultiException.java:61) 
     at org.apache.karaf.bundle.command.Install.execute(Install.java:116)[21:org.apache.karaf.bundle.core:4.0.0.M2] 
     at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:83)[41:org.apache.karaf.shell. 
core:4.0.0.M2] 
     at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:67)[41:org.apache.kara 
f.shell.core:4.0.0.M2] 
     at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:87)[41:org.apache.kara 
f.shell.core:4.0.0.M2] 
     at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:480)[41:org.apache.karaf.shell.core:4.0.0.M2] 
     at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:406)[41:org.apache.karaf.shell.core:4.0.0.M2] 
     at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)[41:org.apache.karaf.shell.core:4.0.0.M2] 
     at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:182)[41:org.apache.karaf.shell.core:4.0.0.M2] 
     at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:119)[41:org.apache.karaf.shell.core:4.0.0.M2] 
     at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:94)[41:org.apache.karaf.shell.cor 
e:4.0.0.M2] 
     at org.apache.karaf.shell.impl.console.ConsoleSessionImpl.run(ConsoleSessionImpl.java:267)[41:org.apache.karaf.shell. 
core:4.0.0.M2] 
     at java.lang.Thread.run(Thread.java:744)[:1.8.0] 
Caused by: java.lang.Exception: Unable to install bundle webbundle:file:///D:/MyApp.war?Web-ContextPath=/MyApp 
     at org.apache.karaf.bundle.command.Install.execute(Install.java:79)[21:org.apache.karaf.bundle.core:4.0.0.M2] 
     ... 11 more 
Caused by: org.osgi.framework.BundleException: Duplicate import: javax.servlet.jsp 
     at org.apache.felix.framework.util.manifestparser.ManifestParser.normalizeImportClauses(ManifestParser.java:366)[org. 
apache.felix.framework-4.4.1.jar:] 
     at org.apache.felix.framework.util.manifestparser.ManifestParser.<init>(ManifestParser.java:180)[org.apache.felix.fra 
mework-4.4.1.jar:] 
     at org.apache.felix.framework.BundleRevisionImpl.<init>(BundleRevisionImpl.java:121)[org.apache.felix.framework-4.4.1 
.jar:] 
     at org.apache.felix.framework.BundleImpl.createRevision(BundleImpl.java:1243)[org.apache.felix.framework-4.4.1.jar:] 
     at org.apache.felix.framework.BundleImpl.<init>(BundleImpl.java:112)[org.apache.felix.framework-4.4.1.jar:] 
     at org.apache.felix.framework.Felix.installBundle(Felix.java:2907)[org.apache.felix.framework-4.4.1.jar:] 
     at org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:165)[org.apache.felix.framework- 
4.4.1.jar:] 
     at org.apache.karaf.bundle.command.Install.execute(Install.java:77)[21:org.apache.karaf.bundle.core:4.0.0.M2] 
     ... 11 more 

[email protected]()> 

ответ

0

Это прямо в журнале:

Caused by: org.osgi.framework.BundleException: Duplicate import: javax.servlet.jsp 

может ударить ошибка в Karaf/Pax URL WAR там.

В вашем случае может быть лучше создать WAB, он все равно будет развертываться на сервере tomcat.

EDIT:

в ответ на дополнительный вопрос, а также взглянуть на Пакс Web представлены образцы, и особенно это one

отрывок из POM:

  <plugin> 
      <groupId>org.apache.felix</groupId> 
      <artifactId>maven-bundle-plugin</artifactId> 
      <extensions>true</extensions> 
      <configuration> 
       <supportedProjectTypes> 
        <supportedProjectType>jar</supportedProjectType> 
        <supportedProjectType>bundle</supportedProjectType> 
        <supportedProjectType>war</supportedProjectType> 
       </supportedProjectTypes> 
       <instructions> 
        <Bundle-SymbolicName>${bundle.symbolicName}</Bundle-SymbolicName> 
        <Bundle-Version>${project.version}</Bundle-Version> 
        <Import-Package> 
         org.springframework.osgi.web.context.support, 
         org.springframework.web.servlet.view, 
         org.springframework.web.servlet, 
         *; resolution:=optional 
        </Import-Package> 
        <Export-Package>org.ops4j.pax.web.samples.spring.*,!*</Export-Package> 
        <Bundle-Classpath> 
         WEB-INF/classes 
        </Bundle-Classpath> 
        <Web-ContextPath>war-spring</Web-ContextPath> 
        <Embed-Dependency>*; artifactId=!org.osgi.compendium; scope=compile; type=!pom; inline=true</Embed-Dependency> 
        <Embed-Transitive>true</Embed-Transitive> 
        <_removeheaders> 
         Include-Resource, 
         Private-Package, 
         Embed-Dependency, 
         Embed-Transitive, 
         Ignore-Package 
        </_removeheaders> 
       </instructions> 
      </configuration> 
      <executions> 
       <execution> 
        <id>generate-manifest</id> 
        <phase>process-classes</phase> 
        <goals> 
         <goal>manifest</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <artifactId>maven-war-plugin</artifactId> 
      <configuration> 
       <archive> 
        <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> 
       </archive> 
      </configuration> 
     </plugin> 
+0

Спасибо за ваш ответ. Как я могу создать WAB. Можно ли упаковать как WAB с Maven? –

Смежные вопросы