我们想要一个简单的嵌入式Jetty伺服小服务器,其Web资源位于JAR文件的resources文件夹中。JAR中有一些属性文件,并使用资源路径加载它们。我们希望将Jetty资源库指定为:
JAR文件中的文件夹。这是一个空洞的JAR文件(不是WAR,没有框架,没有Spring, 就像我们可能的那样
)。初始测试继续引发类似于以下字符串的异常:
webPath = "jar:file:!/webapp"; //.... runs the Jetty server
...
resource_handler.setResourceBase( webPath );
尽管服务器似乎正在运行,但结果无法找到我的index.html。( 更新 :)本示例仅取自Jetty的“
嵌入式文件服务器 ”示例。在这种情况下,要求将Jetty 资源库
映射到JAR文件(完整URL):
如下:
代替给出的示例:
我们希望这将浏览器URL映射为:
相比之下,适用于以下配置文件的JAR路径。问题:URL应该是什么,以便Jetty资源库可以提供我的Index.html文件?
文件为:“ / config / display.properties”,并且使用加载资源操作在同一项目代码中起作用。布局是这样的:
app.jar
+----- com /
| +--- ( classes ... )
|
+----- config /
| |
| +--- display.properties
|
+----- webapp /
|
+--- index.html
给出总体思路。
类似的 问题:
我有一个可行的解决方案-我正在发布解决方法,希望这种方法能够激发出正确的方法。我仍然相信应该有一种方法可以相对于JAR在JAR中指定一个文件夹。
无论如何,此方法有效。我用它来从JAR内部存储静态Web内容。本质上,我让Java解析了正在运行的JAR资源的绝对路径,并将该路径名传递给Jetty。当我这样做时,Jetty将显示我的“
helloWorld.html”欢迎文件。
String baseStr = "/webapp"; //... contains: helloWorld.html, login.html, etc. and folder: other/xxx.html
URL baseUrl = SplitFileServerRunner.class.getResource( baseStr );
String basePath = baseUrl.toExternalForm();
....
resource_handler.setDirectoriesListed(true); //... just for testing
resource_handler.setWelcomeFiles(new String[]{ "helloWorld.html" });
resource_handler.setResourceBase( basePath );
LOG.info("serving: " + resource_handler.getBaseResource());
在欢迎文件中,我输入了特定的文本来标识文件的来源(在resources文件夹中)。在浏览器中:
服务helloWorld.html文件。
显示JAR文件中 jar:/ webapp / other / 目录的目录列表。这依赖于在服务器运行时 不 更改JAR。
在Linux上,如果有人 CP -sA在顶部运行JAR的新的JarFile,码头给出:
HTTP ERROR: 500
Problem accessing /. Reason:
java.lang.NullPointerException
而且您无法再访问页面。那是出乎意料的(显然,JAR保持打开状态)。好消息是,如果您使用 mv -s jarfile:
Jetty愉快地继续从(重命名)fileserverXX.jar内容提供服务。我可以为此感到高兴。但是我仍然想知道等效的相对路径以匹配绝对文件名。
首先,使用setspn命令为用户注册服务主体名称。 setspn-CS/dummy@abc.com dummy user setspn-l虚拟用户 给出输出为 CS公司/dummy@abc.com 接下来,当使用 /mapUser 选项执行 ktpass 命令时,将修改用户帐户的服务主体名称,以便删除域组件。 ktpass/pass Password @ 123-out dummy . 1 . k
我使用的是Jetty 9.2。我有一个依赖项JAR,目前我将它放在“lib/ext/”文件夹中,因此它会自动加载。我还尝试在Jetty的“start.bat”中使用“-lib=%EXT_JAR PATH%”。这将在启动时加载JAR。是否可以将JAR保存在自定义文件夹中,并使其在启动类加载器上自动加载,而无需在“start.bat”文件中指定? 提前谢谢。
有没有一种方法可以使用maven jetty插件生成一个带有嵌入式jetty的fat jar?
我一直在寻找如何让嵌入式jetty服务器为包含在同一个JAR中的少数html文件提供服务,但没有成功。这肯定是可能的吗? 如果没有必要,我真的不想经历建设和战争的麻烦。理想情况下,我也不必创建WEB-INFO dir和web.xml文件,尽管我读过的所有解决方案似乎都指向使用WebAppContext来实现这一点。 我阅读了以下链接,但还没有找到在从JAR运行时设置ResourceBase或Bas
我正在使用gradle构建uber jar,我使用的插件https://github.com/johnrengelman/shadow 我在文件夹中有一个json文件,我在下面的代码中使用它 当我运行uber Jar时,面临以下问题 我的build.gradle是这样的
因此,当我编写java文件时: 然后在windows cmd中,我以以下方式编译: 很好,结果是: “严肃的业务逻辑。” 在Netbeans中创建项目时,会添加以下行: 我不能在cmd中编译,只能在IDE中编译。我尝试过manifest.txt,UTF8编码没有BOM,加上文件的换行符。 显示txt: “jar cvfm Program.jar Manifest.txt Program.class