在Jboss 5.1中,Profile Service执行部署服务在Jboss 4.x中所做的工作。在Jboss 4.x中,我使用部署服务“即时”创建数据源,我想知道我是否使用Profile Service可以做同样的事情(因为Jboss 5.x中不再存在部署服务)。 有没有人知道使用ProfileService的实用指南?
谢谢,
的问候。
答案 0 :(得分:3)
我不知道任何指南,但我可以为您提供使用Profile Service的经验以及有关此主题的JBoss Wiki页面的一些链接。我想发布更多链接,但垃圾邮件保护不允许我发布超过两个,但你应该很容易在ProfileService上找到wiki中的其他页面。如果你找不到太多,不要惊讶,没有更多。
在那里你可以找到有关ProfileService的有用信息,但据我所知,jboss wiki中没有详细信息。
为了动态创建数据源,您可以使用DeploymentTemplates(也用于创建消息队列和主题)。最后一个链接提供有关如何使用模板但不包含所有模板名称及其属性的信息。你可以以编程方式列出它们。
// Get all Templates
for(String template : mgtView.getTemplateNames())
{
System.out.println("=========================================");
System.out.println("Listing properties for template: "+template);
DeploymentTemplateInfo info = mgtView.getTemplate(template);
for(String prop : info.getProperties().keySet())
System.out.println("- "+prop);
}
为了从外部java程序获取ManagementView(mgtView),您可以使用类似的东西:
// set security policy
System.setProperty("java.security.policy", "<path_to_policy_file>");
System.setSecurityManager( new RMISecurityManager() ) ;
// set initial context properties
Hashtable<String, String> env = new Hashtable<String, String>();
env.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
env.put("java.naming.provider.url","jnp://localhost:1099");
env.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
ctx = new InitialContext(env);
// login to JBoss
SecurityClient client = SecurityClientFactory.getSecurityClient();
client.setSimple("admin", "admin");
client.login();
// get ProfileService and ViewManager
ProfileService ps = (ProfileService) ctx.lookup("ProfileService");
mgtView = ps.getViewManager();
您想要获得的是Java Naming Conext(InitialContext)。为此,您需要一个安全策略(您可以使用位于JBOSS_HOME / server / SERVER_DIR / conf /中的java.policy文件),安全管理器和环境属性来获取上下文。 java.naming.provider.url指定JBoss命名服务的位置(默认端口为1099)。
通常,您必须在此时使用SecurityClient进行身份验证。
最后,您可以使用上下文来绘制ProfileService。
此时大部分有趣的事情已经完成,你可以开始玩了。 getViewManager()返回ViewManager,您可以使用它来动态创建数据源,getDeploymentManager()将为您提供DeploymentManager,您可以使用它来部署,取消部署,启动,停止应用程序和其他部署。
您需要执行的库位于
中我已多次阅读过,包括客户端目录中的jbossall-client.jar应该足够了,但实际上并非如此。据我所知,您需要来自所有三个目录的库(至少在没有引用所有目录的情况下都无法实现)。我还没弄明白你需要哪些罐子......
重要:Jboss 5社区版中的ProfileService有一些错误,但在JBoss 6中已得到修复。我建议使用更新的JBoss版本或企业版。