2012-04-18 15 views
5

Apache Felix'e bir uygulama dağıtmaya çalışıyorum. Bu bir gwt uygulamasıydı ama problemi sadece bir Merhaba dünya html dosyasına kadar basitleştirdim, bu yüzden benim problemim bir savaş dosyasında her türlü web uygulamasını dağıtmak. Ayrıca, oluşturulan savaşları Apache Karaf'ta konuşlandırmaya çalıştım ve herhangi bir problem yaşamadan çalıştılar (bir kere siz install feature war). Apache Felix'de savaş dosyaları dağıtılsın mı?

Yani, şu anda bu var:

[email protected]:~/devel/webapp $ tree 
. 
├── pom.xml 
├── src 
   └── main 
    ├── resources 
    └── webapp 
     ├── foobar.html 
      └── WEB-INF 
      └── web.xml 

pom.xml, ilginç kısmı Felix eklenti ile oldukça basit ilgilidir, ancak herhangi bir derlenmiş kod olmadan bu savaş için önemli değil. .. Ben buna uygulamayı çalıştırmak için denedim çünkü

<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> 

kişilik eklenti var da, ama aynı sonucu var. web.xml boş biridir: Ben Apache Felix dağıtmadan eğer

<!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> 

ben hiç hata olsun, savaş dosyası oluşturmak için mvn paketi yürütmek sonra, paket devlet aktiftir ama sadece almak 404 hataları/örnek yollarına erişmeye çalışıyor. Hem örnek hem de örnek olarak bağlam yolu değerleri koymaya çalıştım. Aynı davranış mvn pax çalışıyor: çalıştırın. Eğer savaşı Apache karafına dağıtırsam, bu yüzden çalışır, bu yüzden felix ile yanlış bir şey yaptığımı varsayardım. işi yaptıklarını

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) 
+0

Konsolda bir sonraki sırada kontrol ettiğim şey, paketinizin (yukarıdaki listeye dahil edilmemiş gibi görünüyor, ancak bunun yalnızca bir kurgu için düzenlenmiş olduğunu varsayalım) bir HTTP hizmeti kullanıyor olmasıdır. Varsa, bir bağlantı noktanız veya URL’niz yanlış. Öyle değilse, pax-web WAB'nizi bir sebepten dolayı fark etmiyor. –

+1

Ayrıca, OSGi kabının sorun olmadığını onaylamak için bir ekinox kapsayıcı (--platform = equinox) denemenizi öneririz. Ben de ekinox ile aynı davranışı göreceğinizi sanıyorum, eksik bir pax-web paketi veya bir pax-runner sorunu veya bir pax-web hatası veya port çömelme - ama Felix değil. –

cevap

3

desteler OPS4J- * onlar vardı, ama iskelesi çalışan olanları org.apache.felix.http idi *:

demetleri Benim şu anki listesidir.. Bir kez ben kaldırıldı her şey çalışmaya başladı org.apache.felix.http. * demetleri.

+2

Kendi cevabınızı kabul etmelisiniz =) – earcam

İlgili konular