2016-12-29 61 views
1

我試圖將帶有靜態HTML頁面的webapp文件夾添加到帶有Wildfly Swarm的JAXRSArchive中。但不幸的是它沒有成功。我怎樣才能做到這一點?Wildfly Swarm JAXRSArchive添加webapp目錄

+0

你解決了這個問題嗎?我有同樣的問題。 –

回答

0

所有靜態文件複製src/main/webapp和你的主要方法中添加通話staticContenet如下

public static void main(String... args) throws Exception { 
    Swarm container = new Swarm(); 
    JAXRSArchive jaxrsDeployment = ShrinkWrap.create(JAXRSArchive.class); 
    jaxrsDeployment.addAsLibrary(container.createDefaultDeployment()); 
    jaxrsDeployment.addAllDependencies(); 
    jaxrsDeployment.staticContent(); 
    container.start(); 
    container.deploy(jaxrsDeployment); 
+0

我做了同樣的事情,但它不適合我。也許我想念什麼? – Nikita

+0

你可以檢查罐子/戰爭的內容,看看他們是否正確添加 – ravthiru

+0

這是一個問題。他們不。 – Nikita

0

你能細說爲什麼你需要一個定製的main()?

首選選項是不使用自定義main(),或者如果您必須具有自定義main()不自定義部署。

您只需撥打Swarm.deploy(),它會創建一個默認的部署,而如果你的項目類型的戰爭,將正常工作

+0

我喜歡基於Java的方法。此部署定製用於大多數野蠻羣體示例中(例如添加招搖)。對我來說,這看起來更好,但沒有很好的文檔記錄。 – Nikita

+0

大多數示例和文檔都可以自定義部署,所以它不會更容易。 – Nikita

+0

如果您確實需要定製main(),因爲您需要以某種方式定製WAR,請使用Swarm.createDefaultDeployment()爲您提供一個相當於Maven WAR包裝的存檔,而不是從頭開始構建它 – Ken

0

這個問題已經過時。但是,我爲那些遇到同樣問題的人發佈了這個解決方案。

如果您使用JAX-RS而未指定@ApplicationPath,則可能會發生此問題。

默認情況下,JAX-RS會偵聽您的應用的根/並覆蓋標準映射。

在這種情況下,你必須添加這樣的配置:

import javax.ws.rs.ApplicationPath; 
import javax.ws.rs.core.Application; 

@ApplicationPath("/api") 
public class JaxRSConfiguration extends Application { 
} 

這將前綴所有JAX-RS端點與/api,讓你與靜態內容合作。

相關問題