我正在編寫一個獨立的程序來調用EJB。而EJB被部署到我的本地JBoss服務器。我按照指引在這裏: http://www.mastertheboss.com/jboss-server/jboss-as-7/jboss-as-7-remote-ejb-client-tutorial?showall=遠程EJB調用
當我執行我的主要問題,它拋出
javax.ejb.EJBAccessException: JBAS013323: Invalid User
javax.ejb.EJBAccessException: JBAS013323: Invalid User
at org.jboss.as.ejb3.security.SecurityContextInterceptor$1.run(SecurityContextInterceptor.java:54)
at org.jboss.as.ejb3.security.SecurityContextInterceptor$1.run(SecurityContextInterceptor.java:45)
at org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:78)
有誰知道我錯過了什麼?謝謝您的幫助。
我的主要程序:
private void start() throws Exception {
logger.info("----------------------program start--------------------------");
Context context = null;
try {
init();
final Hashtable<String, Object> jndiProperties = new Hashtable<>();
jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
jndiProperties.put("jboss.naming.client.ejb.context",true);
jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
jndiProperties.put(Context.PROVIDER_URL,"remote://localhost:4447");
context = new InitialContext(jndiProperties);
GrainReportManagerRemote grainReportManagerRemote = (GrainReportManagerRemote) context.lookup("java:GrainEar/GrainEJB/GrainReportManager!"+ GrainReportManagerRemote.class.getName());
grainReportManagerRemote.export();
} catch (Exception e) {
logger.error(e, e);
} finally {
if (context != null)
context.close();
}
logger.info("----------------------program end--------------------------");
}
jboss-ejb-client.properties:
endpoint.name = client-endpoint
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS = false
remote.connection.default.host = localhost
remote.connection.default.port = 4447
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED = false
remote.connections = default
remote.connection.default.username=appuser
remote.connection.default.password=appuser`123
你不需要重申有關JNDI的信息在你的代碼,如果你正在使用JBoss的EJB -client.properties。你是否檢查過ejb-client.properties是否在客戶端的類路徑中? – 2014-12-19 08:13:38
我發現密碼和用戶名可以傳遞給我的自定義領域。但是,每次運行程序時都會返回隨機密碼。此外,我已經刪除了ejb-clioent-properties並在程序中配置了jndi設置。 我的問題類似於這個問題(http://stackoverflow.com/questions/18181141/jboss7-custom-login-module-not-working),但我按照他的jndi配置,它仍然返回隨機密碼 – PrimaryChicken 2014-12-19 09:37:01