maven,Apache ServiceMixを用いてOSGI webを開発した例

4461 ワード

一:mavenのwebappプロジェクトの作成 ppweb
pom.xmlの内容は以下の通りです.
<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.lala</groupId>
	<artifactId>ppweb</artifactId>
	<packaging>war</packaging>
	<version>1.0.0</version>

	<name>ppweb Maven Webapp</name>
	<url>http://maven.apache.org</url>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.0</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>

	<build>
		<finalName>ppweb</finalName>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.3</version>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
				</configuration>
			</plugin>
			<plugin>  
                <groupId>org.apache.tomcat.maven</groupId>  
                <artifactId>tomcat7-maven-plugin</artifactId>  
                <version>2.2</version>  
                <configuration>  
                    <path>/</path>  
                    <port>9090</port>  
                    <uriEncoding>UTF-8</uriEncoding>  
                </configuration>  
            </plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.6</version>
				<configuration>
					<archive>
						<manifest>
							<addClasspath>false</addClasspath>
							<classpathPrefix>WEB-INF/lib/</classpathPrefix>
						</manifest>
						<manifestEntries>
							<Bundle-ManifestVersion>2</Bundle-ManifestVersion>
							<Class-Path>${project.build.finalName}.jar</Class-Path>
							<Bundle-Name>${project.groupId}.${project.ArtifactId}</Bundle-Name>
							<Bundle-SymbolicName>${project.groupId}.${project.ArtifactId}</Bundle-SymbolicName>
							<Bundle-Version>${project.version}</Bundle-Version>
							<Bundle-Vendor>${project.groupId}</Bundle-Vendor>
							<Import-Package>
								org.osgi.framework,
								javax.servlet.http,
								javax.servlet
							</Import-Package>
							<Embed-Dependency>*</Embed-Dependency>
							<DynamicImport-Package>*</DynamicImport-Package>
							<Web-ContextPath>/ppweb</Web-ContextPath>
							<Bundle-ClassPath>.,WEB-INF/classes</Bundle-ClassPath>
						</manifestEntries>
					</archive>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

注意:ここのtomcat 7-maven-pluginプラグインは、あってもなくても、ローカルで実行しやすいようにしています(mvn tomcat 7:run)
2:
src/main/java/webapp/index.jspファイルを編集し、任意にいくつかの内容を追加します.
3:
apache-servicemixをダウンロードし、解凍します.
四:
上のwebプロジェクトをパッケージ化し、mvn package
生成したwarをapache-servicemixのdeployディレクトリに捨てる
最後にapache-servicemixを起動しbin/servicemix.batを実行
ポップアップウィンドウでlistを入力するとbundleリストが表示されます

ここのppwebプロジェクトはインストールに成功しました
ブラウザを開き、入力http://127.0.0.1:8181/ppwebを選択します.
Webポートのデフォルトは8181です.
ここの/ppwebは、上のWeb-ContextPathの構成で、一貫性を保つ必要があります