我可以托管开发人员最小的Jetty服务器,用于运行我在primefaces / java中编写的应用程序,在AtomicServerWeb.war文件中编译的应用程序
我的代码AtomicServer.java / AtomicServer.jar
package atomicserver;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;
public class AtomicServer {
public static void main(String[] args) throws Exception {
//System.setProperty("org.eclipse.jetty.LEVEL", "DEBUG");
Server server = new Server(8080);
org.eclipse.jetty.webapp.Configuration.ClassList classlist = org.eclipse.jetty.webapp.Configuration.ClassList.setServerDefault(server);
classlist.addAfter("org.eclipse.jetty.webapp.FragmentConfiguration", "org.eclipse.jetty.plus.webapp.EnvConfiguration", "org.eclipse.jetty.plus.webapp.PlusConfiguration");
WebAppContext context = new WebAppContext();
context.setWar("../../AtomicServerWeb/dist/AtomicServerWeb.war");
context.setContextPath("/");
context.setParentLoaderPriority(false);
server.setHandler(context);
server.start();
server.join();
}
}
错误日志...
Y:\JavaSistemas\AtomicServer\dist>java -jar AtomicServer.jar
2015-10-28 13:58:54.371:INFO::main: Logging initialized @395ms
2015-10-28 13:58:55.046:INFO:oejs.Server:main: jetty-9.3.z-SNAPSHOT
2015-10-28 13:58:56.703:INFO:oejw.StandardDescriptorProcessor:main: NO JSP
Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
2015-10-28 13:58:56.751:WARN:oejs.BaseHolder:main:
java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
OB的。 我也尝试使用jetty-runner.jar运行,错误就是这个。
java -jar jetty-runner-8.1.9.v20130131.jar --port 9090 --log saida.log ../AtomicServerWeb/dist/AtomicServerWeb.war
2015-10-28 13:57:30.563:INFO:omjr.Runner:Runner
2015-10-28 13:57:30.564:WARN:omjr.Runner:No tx manager found
2015-10-28 13:57:30.753:INFO:omjr.Runner:Deploying file:/Y:/JavaSistemas/AtomicServerWeb/dist/AtomicServerWeb.war @ /
2015-10-28 13:57:31.257:INFO:oejs.Server:jetty-8.y.z-SNAPSHOT
2015-10-28 13:57:31.399:INFO:oejw.WebInfConfiguration:Extract jar:file:/Y:/JavaSistemas/AtomicServerWeb/dist/AtomicServerWeb.war!/ to C:\Users\marcos.ti.DALMOBILE\AppData\Local\Temp\jetty-0.0.0.0-9090-AtomicServerWeb.war-_-any-\webapp
2015-10-28 13:57:33.287:INFO:oejpw.PlusConfiguration:No Transaction manager found - if your webapp requires one, please configure one.
2015-10-28 13:57:35.563:WARN:oejs.Holder:
java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
OBS2:
在我的netbeans上使用GlassFish运行这个应用程序,我没有问题..
有什么想法吗?
答案 0 :(得分:1)
您需要添加以下依赖项:
Glassfish和Jetty之间的区别在于,Glassfish是一个java ee应用程序服务器,它已经具有这些依赖项。 Jetty不是应用程序服务器,只是像tomcat这样的Web服务器,所以你需要添加所有需要的依赖项。
如果您使用maven,可以按如下方式添加依赖项:
对于Jsf的Mojarra实施
<!-- JSF -->
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>${jsf.version}</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>${jsf.version}</version>
</dependency>
修改强>
要解决NoCLassDefFound ExpressionFactory,您需要添加以下jar:
EL-IMPL
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
<version>${el.version}</version>