/*
* Create the appWebSocketDeploymentInfo and configure
*/
WebSocketDeploymentInfo appWebSocketDeploymentInfo = new WebSocketDeploymentInfo();
appWebSocketDeploymentInfo.setBuffers(new ByteBufferSlicePool(BufferAllocator.BYTE_BUFFER_ALLOCATOR, 17000, 17000 * 16));
appWebSocketDeploymentInfo.addEndpoint(WebSocketEndpoint1.class);
appWebSocketDeploymentInfo.addEndpoint(WebSocketEndpoint2.class);
/*
* Create the appDeploymentInfo and configure
*/
DeploymentInfo appDeploymentInfo = Servlets.deployment()
.setClassLoader(Server.class.getClassLoader())
.setContextPath("/myapp)
.setDeploymentName("app.war")
.setResourceManager(new FileResourceManager(new File("src/main/webapp"), 1024))
.addServlets(Servlets.servlet("HomeServlet", HomeServlet.class).addMapping("/home"))
.setResourceManager(new ClassPathResourceManager(Server.class.getClassLoader(), Server.class.getPackage()))
.addServletContextAttribute(WebSocketDeploymentInfo.ATTRIBUTE_NAME, appWebSocketDeploymentInfo);
/*
* Create the deploymentManager
*/
deploymentManager = Servlets.defaultContainer().addDeployment(appDeploymentInfo);
/*
* Deploy the app
*/
deploymentManager.deploy();
/*
* Create the path handle
*/
pathHandler = Handlers.path(Handlers.redirect("/myapp/home")).addPrefixPath("/myapp", deploymentManager.start());
/*
* Create the server
*/
undertowServer = Undertow.builder().addHttpListener(DEFAULT_PORT, DEFAULT_IP).setHandler(pathHandler).build();
经过广泛的测试和研究,我得到了正确的方法来进行配置和启动服务器,还将添加对其他技术的支持,如:
我的最后代码:
UndertowJaxrsServer server = new UndertowJaxrsServer();
Undertow.Builder serverBuilder = Undertow.builder().addHttpListener(DEFAULT_PORT, DEFAULT_IP);
ServletContainer servletContainer = Servlets.defaultContainer();
/*
* Create the App WebSocketDeploymentInfo and configure
*/
WebSocketDeploymentInfo appWebSocketDeploymentInfo = new WebSocketDeploymentInfo();
appWebSocketDeploymentInfo.setBuffers(new ByteBufferSlicePool(BufferAllocator.BYTE_BUFFER_ALLOCATOR, 17000, 17000 * 16));
appWebSocketDeploymentInfo.addEndpoint(WebSocketNodeChannelServerEndpoint.class);
appWebSocketDeploymentInfo.addEndpoint(WebSocketClientChannelServerEndpoint.class);
/*
* Create the App ResteasyDeployment and configure
*/
ResteasyDeployment deployment = new ResteasyDeployment();
deployment.setApplicationClass(JaxRsActivator.class.getName());
deployment.setInjectorFactoryClass("org.jboss.resteasy.cdi.CdiInjectorFactory");
/*
* Create the App DeploymentInfo and configure
*/
DeploymentInfo appDeploymentInfo = server.undertowDeployment(deployment, APP_NAME);
appDeploymentInfo.setClassLoader(FermatEmbeddedNodeServer.class.getClassLoader())
.setContextPath(APP_NAME)
.setDeploymentName(WAR_APP_NAME)
.addServletContextAttribute(WebSocketDeploymentInfo.ATTRIBUTE_NAME, appWebSocketDeploymentInfo)
.addServlets(Servlets.servlet("HomeServlet", HomeServlet.class).addMapping("/home"))
.addListeners(Servlets.listener(org.jboss.weld.environment.servlet.Listener.class));
server.deploy(appDeploymentInfo);
server.start(serverBuilder);
compile 'io.undertow:undertow-core:1.3.6.Final'
compile 'io.undertow:undertow-servlet:1.3.6.Final'
compile 'io.undertow:undertow-websockets-jsr:1.3.6.Final'
compile 'org.jboss.resteasy:resteasy-undertow:3.0.13.Final'
compile 'org.jboss.resteasy:resteasy-cdi:3.0.13.Final'
compile 'org.jboss.weld.servlet:weld-servlet:2.3.1.Final'
compile 'javax:javaee-api:7.0'
当我运行ear项目时,在war中更改web资源并不会在服务器上重新部署它,尽管我在所有地方都检查了“Deploy on Save”(war/ear)。 一些可能有用的信息: 我没有从NetBeans生成pom.xml。这些项目以前是ant project,我通过模仿netbeans从ear/ejb/war设置生成的内容进行迁移。 我有时很难在war文件中进行更改。我需要清理所有项目,停止服务器等。
我试图让CDI在tomcat 9.x中工作。我遵循了以下链接,但openwebbeans容器仍然没有将资源注入servlet https://devlearnings.wordpress.com/2011/05/15/apache-openwebbeans-cdi-from-standalone-to-webapp/https://dzone.com/articles/using-apache-o
文件src/main/webapp/WEB-INF/web.xml包含用于引导CDI的servlet侦听器和BeanManager引用: 通过这些设置,在使用mvn Jetty运行应用程序时,我总是遇到以下错误:run(第一行是最重要的): 应用程序正在运行,但正如异常消息所述:CDI注入在servlet中不可用。 在src/main/resources/log4j.properties中,我增加
我正在尝试使用AWS CDK部署lambda,但它似乎无法正常工作/部署。管道中的“框”为绿色,因此不会返回任何错误。 一切似乎都很好,但是当我手动运行它进行测试时,我收到了下一条消息: 问题是,如果我手动将人工制品下载到我的机器上,并使用上传按钮将其上载,它将正常工作。 我有一个,其中包含,这是我用来创建lambda的堆栈。 然后我有管道,其中一个步骤是构建lambda: 还有更多的步骤,但它们
问题内容: 我正在Linux Ubuntu Natty Narwhal中运行带有Tomcat 7.0.12的Eclipse Helios Service Release 1。 我一直很高兴地重新部署我的Web应用程序,直到它毫无理由地停止工作为止。显示以下异常: 在“ 服务器” 选项卡中,“本地主机上的Tomcat v7.0服务器[已启动,已同步] 我的项目显示为Tomcat v7.0 Serve
主要内容:部署,访问Servlet 没有 main() 方法,不能独立运行,但它可以作为 JavaWeb 应用的一个组件被部署到 Servlet 容器中,由容器来实例化和调用 Servlet 的方法,例如:doGet() 、doPost() 等。 那么,JavaWeb 应用是什么呢?Servlet 是如何部署和访问的呢?本节我们将针对这些问题进行讲解。 JavaWeb 应用 JavaWeb 应用由一组 Servlet