Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Osgi 在ApacheFelix中部署war文件?_Osgi_War_Apache Felix_Pax_Pax Runner - Fatal编程技术网

Osgi 在ApacheFelix中部署war文件?

Osgi 在ApacheFelix中部署war文件?,osgi,war,apache-felix,pax,pax-runner,Osgi,War,Apache Felix,Pax,Pax Runner,我正在尝试将一个应用程序部署到ApacheFelix。它是一个gwt应用程序,但我一直在简化这个问题,直到只有一个hello world html文件,所以我的问题是在war文件中部署任何类型的web应用程序。我还尝试在ApacheKaraf中部署生成的WAR,它们工作起来没有任何问题(一旦您完成) 所以,现在我有这个: blaxter@duffman:~/devel/webapp $ tree . ├── pom.xml ├── src    └── main    ├── res

我正在尝试将一个应用程序部署到ApacheFelix。它是一个gwt应用程序,但我一直在简化这个问题,直到只有一个hello world html文件,所以我的问题是在war文件中部署任何类型的web应用程序。我还尝试在ApacheKaraf中部署生成的WAR,它们工作起来没有任何问题(一旦您完成)

所以,现在我有这个:

blaxter@duffman:~/devel/webapp $ tree
.
├── pom.xml
├── src
    └── main
        ├── resources
        └── webapp
            ├── foobar.html
            └── WEB-INF
                └── web.xml
xml非常简单,有趣的部分与felix插件有关,但是对于这场没有任何编译代码的战争来说,这并不重要

<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.mycompany</groupId>
<artifactId>webapp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>webapp Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
    </dependency>
</dependencies>
<build>
    <finalName>webapp</finalName>

    <plugins>
    <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>2.3.7</version>
        <extensions>true</extensions>
        <executions>
        <execution>
            <id>bundle-manifest</id>
            <phase>process-classes</phase>
            <goals>
            <goal>manifest</goal>
            </goals>
        </execution>
        </executions>
        <configuration>
        <supportedProjectTypes>
            <supportedProjectType>jar</supportedProjectType>
            <supportedProjectType>bundle</supportedProjectType>
            <supportedProjectType>war</supportedProjectType>
        </supportedProjectTypes>
        <instructions>
            <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
            <Bundle-Version>${project.version}</Bundle-Version>
            <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>
            <Embed-Directory>WEB-INF/lib</Embed-Directory>
            <Embed-Transitive>true</Embed-Transitive>
            <Import-Package>*;resolution:=optional</Import-Package>
            <Web-ContextPath>/sample</Web-ContextPath>
            <Webapp-Context>/sample</Webapp-Context>
            <_wab>src/main/webapp</_wab>
        </instructions>
        </configuration>
    </plugin>


    <plugin>
        <groupId>org.ops4j</groupId>
        <artifactId>maven-pax-plugin</artifactId>
        <configuration>
        <provision>
            <param>--platform=felix</param>
            <param>--profiles=compendium,web,war,log</param>
            <param>--log=debug</param>
        </provision>
        </configuration>
    </plugin>

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.1.1</version>
        <executions>
        <execution>
            <phase>compile</phase>
            <goals>
            <goal>exploded</goal>
            </goals>
        </execution>
        </executions>
        <configuration>
        <webappDirectory>${webappDirectory}</webappDirectory>
        <archive>
            <!-- add the generated manifest to the war -->
            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
        </archive>
        </configuration>
    </plugin>

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
        <source>1.6</source>
        <target>1.6</target>
        </configuration>
    </plugin>
</plugins>
</build>
</project>

完成这项工作的捆绑包是OPS4J-*捆绑包,但运行jetty的捆绑包是org.apache.felix.http.*。一旦我删除了org.apache.felix.http.*捆绑包,一切都开始工作。

我接下来要在控制台中检查的是,您的捆绑包(它似乎没有包含在上面的列表中,但我假设它只是为了简洁而被编辑掉)是否正在使用http服务。如果是,则说明您的端口或URL错误。如果不是这样,pax web就不会因为这样或那样的原因注意到您的WAB。我还建议尝试使用equinox容器(--platform=equinox)来确认OSGi容器不是问题所在。我怀疑你会在equinox上看到同样的行为,暗示这是一个缺失的pax web包或pax runner问题,或pax web bug或端口占用-但不是Felix。
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <welcome-file-list>
    <welcome-file>foobar.html</welcome-file>
  </welcome-file-list>
</web-app>
g! lb
START LEVEL 1
ID|State      |Level|Name
 0|Active     |    0|System Bundle (4.0.2)
 1|Active     |    1|JXSE (2.7.0)
 2|Active     |    1|Apache Felix Bundle Repository (1.6.6)
 3|Active     |    1|Apache Felix Configuration Admin Service (1.2.8)
 4|Active     |    1|Apache Felix EventAdmin (1.2.14)
 5|Active     |    1|Apache Felix File Install (3.2.0)
 7|Resolved   |    1|Apache Felix Security Provider (2.0.1)
 8|Active     |    1|Apache Felix Gogo Command (0.12.0)
 9|Active     |    1|Apache Felix Gogo Runtime (0.10.0)
10|Active     |    1|Apache Felix Gogo Shell (0.10.0)
11|Active     |    1|Apache Felix Http Api (2.2.0)
12|Active     |    1|Apache Felix Http Base (2.2.0)
13|Active     |    1|Apache Felix Http Bridge (2.2.0)
14|Active     |    1|Apache Felix Http Bundle (2.2.0)
15|Active     |    1|Apache Felix Http Jetty (2.2.0)
16|Active     |    1|Apache Felix Log Service (1.0.1)
17|Active     |    1|Apache Felix Shell Service (1.4.2)
18|Active     |    1|OPS4J Pax Logging - API (1.6.3)
19|Active     |    1|OPS4J Pax Logging - Service (1.6.3)
20|Active     |    1|OPS4J Pax Url - mvn: (1.2.8)
21|Active     |    1|OPS4J Pax Url - war (1.2.8)
22|Active     |    1|OPS4J Pax Url - wrap: (1.2.8)
23|Active     |    1|OPS4J Pax Web - API (1.0.9)
24|Active     |    1|OPS4J Pax Web - FileInstall Deployer (1.0.9)
25|Active     |    1|OPS4J Pax Web - Extender - WAR (1.0.9)
26|Active     |    1|OPS4J Pax Web - Extender - Whiteboard (1.0.9)
27|Active     |    1|OPS4J Pax Web - Jetty Bundle (1.0.9)
28|Active     |    1|OPS4J Pax Web - Jsp Support (1.0.9)
29|Active     |    1|OPS4J Pax Web - Runtime (1.0.9)
30|Active     |    1|OPS4J Pax Web - Service SPI (1.0.9)