如何配置 Jetty 9 以使用 Gretty 监听多个端口。我只想将 Jetty 配置为侦听多个端口。我不想要多个实例或多个 webapps,只需要一个 Jetty,一个 webapp,但要监听 2 个或更多端口。
我尝试添加serverConfigFile = file("src/main/webapp/WEB-INF/jetty-webserver.xml")
Gretty 配置,但随后出现以下错误。
jetty-webserver.xml
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
<Set name="host"><Property name="jetty.host" /></Set>
<Set name="port"><Property name="jetty.port" default="8080"/></Set>
<Set name="maxIdleTime">300000</Set>
<Set name="Acceptors">2</Set>
<Set name="statsOn">false</Set>
<Set name="confidentialPort">8443</Set>
<Set name="lowResourcesConnections">20000</Set>
<Set name="lowResourcesMaxIdleTime">5000</Set>
</New>
</Arg>
</Call>
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
<Set name="host"><Property name="jetty.host" /></Set>
<Set name="port"><Property name="jetty.port" default="8081"/></Set>
<Set name="maxIdleTime">300000</Set>
<Set name="Acceptors">2</Set>
<Set name="statsOn">false</Set>
<Set name="lowResourcesConnections">20000</Set>
<Set name="lowResourcesMaxIdleTime">5000</Set>
</New>
</Arg>
</Call>
</Configure>
java.lang.ClassLoader.loadClass(ClassLoader.java) 处的 java.net.URLClassLoader.findClass(URLClassLoader.java:382) 处的线程“主”java.lang.ClassNotFoundException 中的异常:org.eclipse.jetty.server.nio.SelectChannelConnector :424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) 在 org.eclipse.jetty.util.Loader.loadClass(Loader. java:86) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.nodeClass(XmlConfiguration.java:364) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:754) at org.eclipse org.eclipse.jetty.xml 中的 .jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1125)。XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:1030) 在 org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.call(XmlConfiguration.java:721) 在 org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration. java:417) 在 org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:298) 在 org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:248) 在 org.eclipse.jetty .xml.XmlConfiguration$configure.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite. java:116) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128) at org.akhikhl.gretty.JettyConfigurerImpl.applyJettyXml(JettyConfigurerImpl.groovy:63) at org.akhikhl.gretty.JettyConfigurer$applyJettyXml$0.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray .defaultCall(CallSiteArray.java:47) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:136) ) 在 org.akhikhl.gretty.JettyServerConfigurer.createAndConfigureServer(JettyServerConfigurer.groovy) 在 org.akhikhl.gretty.JettyServerConfigurer.createAndConfigureServer(JettyServerConfigurer.groovy:65) 在org.codehaus.groovy.runtime。callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.call(AbstractCallSite.java:116) java:120) at org.akhikhl.gretty.JettyServerManager.startServer(JettyServerManager.groovy:44) at org.akhikhl.gretty.ServerManager$startServer$0.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray .defaultCall(CallSiteArray.java:47) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128) ) 在 sun.reflect.NativeMethodAccessorImpl 的 org.akhikhl.gretty.Runner.run(Runner.groovy:121)。在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java: 43) 的 invoke0(Native Method) 498) 在 org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:71) 在 org.codehaus. .groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite .call(AbstractCallSite.java:120) 在 org.akhikhl.gretty.Runner。main(Runner.groovy:48) 线程“Thread-29”中的异常 org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_191\bin\java.exe'' org.gradle.process.internal.DefaultJavaExecAction.execute(DefaultJavaExecAction.java:38) 在 org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:396) 以非零退出值 1 结束.gradle.process.internal.DefaultExecActionFactory.javaexec(DefaultExecActionFactory.java:129) 在 org.gradle.api.internal.project.DefaultProject.javaexec(DefaultProject.java:1103) 在 org.gradle.api.internal.project.DefaultProject org.gradle.api.Project$javaexec$6.call(Unknown Source) 的 org.codehaus.groovy 的 .javaexec(DefaultProject.java:1098)。runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call( AbstractCallSite.java:127) 在 org.akhikhl.gretty.DefaultLauncher.javaExec(DefaultLauncher.groovy:93) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:104 ) 在 org.codehaus 的 groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:326)。org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:68) 在 org.codehaus.groovy.runtime.callsite.CallSiteArray 的 groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:352)。 defaultCallCurrent(CallSiteArray.java:51) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:156) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:168)在 org.akhikhl.gretty.LauncherBase$_launchThread_closure4.doCall(LauncherBase.groovy:259) 在 org.akhikhl.gretty.LauncherBase$_launchThread_closure4.doCall(LauncherBase.groovy) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun .reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl。java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod .java:104) 在 groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:326) 在 org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264) 在 groovy.lang.MetaClassImpl.invokeMethod( MetaClassImpl.java:1041) 在 groovy.lang.Closure.call(Closure.java:411) 在 groovy.lang.Closure.call(Closure.java:405) 在 groovy.lang.Closure.run(Closure.java:492 ) 在 java.lang.Thread.run(Thread.java:748)reflect.Method.invoke(Method.java:498) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:104) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:326) at org.codehaus .groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264) 在 groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041) 在 groovy.lang.Closure.call(Closure.java:411) 在 groovy。 lang.Closure.call(Closure.java:405) 在 groovy.lang.Closure.run(Closure.java:492) 在 java.lang.Thread.run(Thread.java:748)reflect.Method.invoke(Method.java:498) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:104) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:326) at org.codehaus .groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264) 在 groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041) 在 groovy.lang.Closure.call(Closure.java:411) 在 groovy。 lang.Closure.call(Closure.java:405) 在 groovy.lang.Closure.run(Closure.java:492) 在 java.lang.Thread.run(Thread.java:748)ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041) at groovy.lang.Closure.call(Closure.java:411) at groovy.lang.Closure.call(Closure .java:405) 在 groovy.lang.Closure.run(Closure.java:492) 在 java.lang.Thread.run(Thread.java:748)ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041) at groovy.lang.Closure.call(Closure.java:411) at groovy.lang.Closure.call(Closure .java:405) 在 groovy.lang.Closure.run(Closure.java:492) 在 java.lang.Thread.run(Thread.java:748)
我查看了这篇文章并与 Gretty 一起寻找解决方案。 如何配置码头监听多个端口
谢谢!