是否可以通过以下方式启动网络应用程序:
1)没有战争文件:
http://stephenh.github.io/2009/01/10/war-less-dev-with-jetty.html http://www.jamesward.com/2011/08/23/war-less-java-web-apps
2)没有web.xml(即Servlet-3.0)
3)从嵌入式Web容器(例如,Tomcat或Jetty ......)
答案 0 :(得分:2)
示例项目:https://github.com/jetty-project/embedded-servlet-3.0
您仍然需要WEB-INF/web.xml
,但it can be empty。这样就可以知道servlet支持级别和元数据完成标志。
示例:清空Servlet 3.0 web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
metadata-complete="false"
version="3.0">
</web-app>
然后,您可以按照EmbedMe.java获取有关如何进行设置的示例。
public class EmbedMe {
public static void main(String[] args) throws Exception {
int port = 8080;
Server server = new Server(port);
String wardir = "target/sample-webapp-1-SNAPSHOT";
WebAppContext context = new WebAppContext();
context.setResourceBase(wardir);
context.setDescriptor(wardir + "WEB-INF/web.xml");
context.setConfigurations(new Configuration[] {
new AnnotationConfiguration(), new WebXmlConfiguration(),
new WebInfConfiguration(), new TagLibConfiguration(),
new PlusConfiguration(), new MetaInfConfiguration(),
new FragmentConfiguration(), new EnvConfiguration() });
context.setContextPath("/");
context.setParentLoaderPriority(true);
server.setHandler(context);
server.start();
server.join();
}
}
答案 1 :(得分:2)
我是怎么做的(嵌入式SpringMVC + Jetty,没有web.xml没有war文件):
使用Spring的@WebAppConfiguration
来引导你的WebApplicationContext
MockServletContext
,
然后只需通过Jetty的ServletContextHandler / ServletHolder机制注册您的new DispatcherServlet(WebApplicationContext)
。简单!
答案 2 :(得分:0)
请参阅BalusC对simple HTTP server in Java using only Java SE API的回答。该示例使用类com.sun.net.httpserver.HttpServer
。
答案 3 :(得分:0)
可以使用不需要WAR或任何XML的Jetty实现嵌入式服务器。您只需指定带注释的类的位置,添加额外的类路径。
应该从主要名称Server.java
命名此方法:
private static void startServer() throws Exception {
final org.eclipse.jetty.server.Server server = new org.eclipse.jetty.server.Server(7070);
final WebAppContext context = new WebAppContext("/", "/");
context.setConfigurations(new Configuration[] { new AnnotationConfiguration(), new WebInfConfiguration() });
context.setExtraClasspath("build/classes/main/com/example/servlet");
server.setHandler(context);
server.start();
server.join();
}
我的src
结构是:
-main
-java
-com.example
-json
-servlet
-filter
-util
Server.java
我希望看到与Tomcat类似的解决方案。