2016-05-03 15 views
0

https://github.com/WASdev/sample.batch.sleepybatchlet無法調用Maven Java批處理使用休息服務部署在自由

我想運行上面的git示例。 我能夠自由地配置和運行ant build java批處理項目。 但是,當涉及到maven項目, 我無法使用其餘服務來控制jobs.i使用defaultKeyStore存在用戶身份驗證問題。 我注意到上面的maven項目中有一個server.xml,但我無法創建密鑰庫密碼。它說「沒有可以找到自由運行時」。

在自由的server.xml

我用一個用戶在basicRegistry 和安全作用「batchadmin」爲同一用戶

應在server.xml做內部項目什麼樣的變化,通過服務器認證。

+0

你能提供更多的細節,例如: server.xml的副本,您正在執行的確切命令以及相應的錯誤命令?您所知的示例本身不包含執行任何測試或將WAR部署到Liberty的任何Maven自動化,因此我無法確切知道您正在嘗試執行什麼操作。 –

+0

同樣,我不知道您是如何配置安全性的,但如果您一直在進行更改,您可能會嘗試刪除** /resources/security/key.jks**,並讓服務器在重新啓動時重新生成。 –

+0

\t <用戶名= 「鮑勃」 密碼= 「bobpwd」/> \t \t <用戶名= 「用戶1」 密碼= 「user1pwd」/> \t \t PremStephenIrudayaraj

回答

0

爲了在配置批處理基於角色的認證時從servlet執行批處理操作,您需要向servlet添加認證挑戰,以便它在特定用戶下運行,而不是UNAUTHENTICATED

你可以像這樣的內容添加到該示例:

import javax.servlet.annotation.HttpConstraint; 
import javax.servlet.annotation.HttpMethodConstraint; 
import javax.servlet.annotation.ServletSecurity; 
import javax.servlet.annotation.WebServlet; 

// ... 
@ServletSecurity(value = @HttpConstraint(transportGuarantee = ServletSecurity.TransportGuarantee.CONFIDENTIAL), 
    httpMethodConstraints = { @HttpMethodConstraint(value = "POST", emptyRoleSemantic = ServletSecurity.EmptyRoleSemantic.PERMIT), 
           @HttpMethodConstraint(value = "GET", emptyRoleSemantic = ServletSecurity.EmptyRoleSemantic.PERMIT), 
           @HttpMethodConstraint(value = "PUT", emptyRoleSemantic = ServletSecurity.EmptyRoleSemantic.PERMIT) }) 
@WebServlet(urlPatterns = { "/joboperator" }) 
public class JobOperatorServlet extends HttpServlet { 

那如DOC你引用的是除了定義用戶註冊表和用戶,並授予他們訪問批次的角色,並在這裏是的,一個片段:

<httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/> 

<keyStore id="defaultKeyStore" password="Liberty"/> 

<basicRegistry id="basic" realm="ibm/api"> 
    <user name="bob" password="bobpwd"/> 
    <user name="jane" password="janepwd"/> 
</basicRegistry> 

<authorization-roles id="com.ibm.ws.batch"> 
    <security-role name="batchSubmitter"> 
     <user name="bob"/> 
    </security-role> 
    <security-role name="batchAdmin"> 
     <user name="jane"/> 
    </security-role> 
</authorization-roles> 

現在,還有的你怎麼批量配置的安全性,即其特點帶來一批安全到圖片一個獨立但相關的問題。但我會留下這個後續問題,並認爲它是現在的理所當然。

+0

我在自由的server.xml中指定了確切的配置。但是當我將maven build war文件放入dropins目錄並啓動服務器時,我無法使用其餘鏈接啓動該作業。它說「用戶UNAUTHUNTICATED沒有啓動作業的權限」 – PremStephenIrudayaraj

+0

好吧,我回答了這個問題:「如果批處理安全啓用,你如何編寫一個servlet來運行?「假設你真的想用批處理安全性來運行,但是請注意,你可以使用批處理REST接口,而不一定以批處理安全性運行,如果你想要做的只是運行該示例,那麼試試REST接口和工具等等,而不用擔心這個階段的一些安全細節,這當然是一種選擇,如果那真的是你想要的,請打開一個單獨的問題,然後我會回答。 –

+0

謝謝scott.But這個是我想要的確切答案,我已經在servlet和server.xml中指定了上述配置,但仍然顯示「User UNAUTHENTICATED未被授權啓動批處理作業」..這意味着它沒有將用戶我已經指定。 – PremStephenIrudayaraj