首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring和was.policy文件

Spring和was.policy文件
EN

Stack Overflow用户
提问于 2012-03-20 20:35:58
回答 1查看 999关注 0票数 0

我正在Websphere上部署一个Spring 应用程序,我需要在该应用程序中实现Java2Security。当我在服务器上启用Java 2安全性并部署应用程序时,它会给出这个错误

代码语言:javascript
运行
复制
Error Message: javax.servlet.ServletException: SRVE0207E: Uncaught initialization exception created by servlet
Error Code: 500
Target Servlet: MyApplication
Error Stack:
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [C:\Program Files\IBM\WebSphere 7.0\AppServer\profiles\AppSrv01\installedApps\antonNode01Cell\MyApplication-1_0_30_BUILD-SNAPSHOT_war.ear\MyApplication-1.0.30.BUILD-SNAPSHOT.war\WEB-INF\classes\com\transoftinc\vlm\myapp\annotations\CSV.class]; nested exception is java.security.AccessControlException: Access denied (java.lang.RuntimePermission accessDeclaredMembers)
 at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:237)
 at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:204)
 at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.java:84) 
 at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73)
 at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1335)
 at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1325)
 at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:135)
 at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:93)
 at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)
 at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
 at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
 at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
 at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
 at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
 at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
 at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)
 at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:93)
 at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
 at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467)
 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397)
 at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
 at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
 at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
 at com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:1708)
 at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinish(WebApp.java:381)
 at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:299)
 ...

我认为问题在于应用程序的安全设置。(或者他们的缺席。)通常,Websphere需要在EAR中包含一个was.policy文件,该文件定义了这些设置。然而,因为我正在部署一个WAR -没有明显的方式来提供该文件。如果我把它放到我的应用程序中的两个META目录中的任何一个中,错误是相同的。好像Websphere没有找到was.policy文件。

我的was.policy文件:

代码语言:javascript
运行
复制
grant codeBase "file:${application}" {
  permission java.lang.RuntimePermission "accessDeclaredMembers";
  permission java.security.AllPermission;
};

grant codeBase "file:${jars}" {
  permission java.security.AllPermission;
};

grant codeBase "file:${connectorComponent}" {
  permission java.security.AllPermission;
};

grant codeBase "file:${webComponent}" {
  permission java.security.AllPermission;
};

grant codeBase "file:${ejbComponent}" {
  permission java.security.AllPermission;
};

问题:

如何为我的应用程序定义安全设置?

实际上,我的目标就是给予所有的权限,然后继续前进。我希望这是可能的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-20 21:56:29

我相信META/was.Policy只支持耳朵,而不是独立的战争。建议:

  1. 在WAR周围创建一个EAR并在那里创建文件,
  2. 将WAR部署为一个独立模块,但是在部署它之后更新应用程序以添加文件。在部署过程中,该产品将在战争中创建一个耳朵。应该可以使用AdminApp.update与partialapp一起添加单个文件,
  3. 禁用Java 2的安全性。如果您将AllPermission授予您的应用程序,那么有什么意义呢?
  4. 将权限添加到

但是,这将影响所有应用程序。

  1. 将权限添加到PROFILE_HOME/properties/server.policy。这需要对路径进行硬编码(或者在服务器JVM中设置系统属性并使用它).
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9794510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档