我在 mac os x 上开发了 jersey web 服务服务器。我已经使用 maven 命令行运行它进行了测试:mvn exec:java
并且它工作得很好。我目前正在 grizzly 中运行我的网络服务。
现在我需要部署到 Windows Server 2008。我应该做什么?
我一直在阅读 Jersey 上的部署文档 here 。
- 我需要遵循第 4.2 节(JAX-RS 应用程序模型)到 4.4 节(配置类路径扫描)吗?
- 我只在 Windows 中运行 Maven 命令行吗?即:
mvn exec:java
- 我需要编译成jar 文件吗?我尝试编译成 jar 文件,但遇到错误。
这就是我编译 jar 文件的方式:mvn -Dmaven.test.skip=true package
这就是我运行 jar 文件的方式:java -jar application.jar
。这是错误:
MyName-MacBook-Pro:target myname$ java -jar application-1.0-SNAPSHOT.jar Exception in thread "main" java.lang.NoClassDefFoundError: org/glassfish/grizzly/http/server/HttpServer at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2531) at java.lang.Class.getMethod0(Class.java:2774) at java.lang.Class.getMethod(Class.java:1663) at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486) Caused by: java.lang.ClassNotFoundException: org.glassfish.grizzly.http.server.HttpServer at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 6 more
这是我的 pom.xml 的内容:
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>org.company</groupId> <artifactId>application</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>application</name> <dependencyManagement> <dependencies> <dependency> <groupId>org.glassfish.jersey</groupId> <artifactId>jersey-bom</artifactId> <version>${jersey.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-grizzly2-http</artifactId> </dependency> <!-- uncomment this to get JSON support: <dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-moxy</artifactId> </dependency> --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency> <!-- Gson: Java to Json conversion --> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.2.4</version> <scope>compile</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> <!-- Apache Log4J --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <inherited>true</inherited> <configuration> <source>1.7</source> <target>1.7</target> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib</classpathPrefix> <mainClass>org.company.Main</mainClass> </manifest> </archive> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <goals> <goal>java</goal> </goals> </execution> </executions> <configuration> <mainClass>org.company.Main</mainClass> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>org.company.Main</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build> <properties> <jersey.version>2.7</jersey.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> </project>
最佳答案
您需要使用Apache Maven Shade Plugin(或类似的插件)来构建您的 Uber Jar (包含所有依赖项的 jar)。然后将此 jar 带到您的服务器并运行:
java -jar bla.jar PATH_TO_POSSIBLE_CONFIG_FILE
关于java - 如何在 Windows Server 上部署 java jersey 和 Grizzly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23907806/