考虑下面的课程.如果我针对它运行Findbugs,它将在第5行给出一个错误("可序列化类中的非瞬态非可序列化实例字段")但不在第7行.
1 public class TestClass implements Serializable {
2
3 private static final long serialVersionUID = 1905162041950251407L;
4
5 private Set<Integer> mySet; // Findbugs error
6
7 private HashSet<Integer> myOtherSet;
8
9 }
Run Code Online (Sandbox Code Playgroud)
这是正确的,因为java.util.Set从不在其层次结构中实现Serializable,而java.util.HashSet也是如此.但是,最佳做法是针对接口而不是具体实现进行编码.
我怎样才能最好地处理这件事?
我可以在第3行添加@Suppresswarnings(justification ="No bug",values ="SE_BAD_FIELD").我的实际代码中有很多集合和列表,我担心它会丢失我的代码太多.
还有更好的方法吗?
我们使用Maven构建我们的项目,使用Nexus作为存储库管理器.
有没有办法知道工件在哪里是另一个工件的依赖?
例如,我们想知道我们的Release存储库中的哪些工件依赖于commons-io 1.2或我们的framework2的xy版本,或者......
我想使用Arquillian在嵌入式Glassfish上测试我的EJB.
重要的是我必须保持安全性,因为我的bean逻辑执行一些编程安全检查(sessionContext.isCallerInRole(role)
).
是否可以在嵌入式Glassfish上使用Arquillian模拟登录?
如何设置Embedded Glassfish以使用用户和角色属性文件?
[编辑]
我找到了一个帖子,我决定遵循的方向(http://community.jboss.org/message/580290),但我仍然遇到问题.
1我arquillian.xml
没被拿起
2我收到有关@Resource SessionContext
3的警告我无法获得正在运行的服务器的实例
SRC /测试/资源/ arquillian.xml:
<arquillian xmlns="http://jboss.com/arquillian"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:glassfish="urn:arq:org.jboss.arquillian.container.glassfish.embedded_3">
<glassfish:container>
<glassfish:bindHttpPort>9090</glassfish:bindHttpPort>
<glassfish:instanceRoot>src/test/glassfish</glassfish:instanceRoot>
<glassfish:autoDelete>true</glassfish:autoDelete>
</glassfish:container>
</arquillian>
Run Code Online (Sandbox Code Playgroud)
我的测试:
@RunWith(Arquillian.class)
public class ArquillianTestCase {
@Deployment
public static JavaArchive createDeployment() {
final JavaArchive jar = ShrinkWrap.create(JavaArchive.class, "test.jar")
.addClasses(FileBrowser.class, FileBrowserBean.class).addAsResource("META-INF/ejb-jar.xml")
.addAsResource("META-INF/glassfish-ejb-jar.xml");
return jar;
}
@EJB
private FileBrowser fileBrowser;
@Test
public void setupSecurity() throws Exception {
GlassfishTestHelper.createFileUser("user1", "xxx", "role1");
}
@Test
public void testLoadConfiguration() throws Exception {
final boolean loggedIn …
Run Code Online (Sandbox Code Playgroud) 我正在学习Spring,我的Spring Security实验失败了.如果我从Eclipse启动并部署到Tomcat,我会得到一个ClassNotFoundException.将Maven构建WAR部署到独立的Tomcat时,我得到IllegalArgumentException.
我究竟做错了什么?
Spring依赖项:
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/security-context.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>timetracking</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>timetracking</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
security-context.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<user-service id="userService">
<user name="user1" password="user1" authorities="USER_ROLE"/>
<user …
Run Code Online (Sandbox Code Playgroud) 我正在学习Spring,现在我正在spring-jdbc命名空间中尝试Spring的<jdbc:embedded-database>标记.我总是遇到同样的错误:当我的测试数据被插入时," java.sql.SQLSyntaxErrorException:user缺少特权或对象未找到 ".
似乎未创建架构或未正确处理权限.当我使用调试器时,似乎正确执行了模式创建脚本.初始化默认数据库时,用户名和密码似乎也正确设置.
我不明白我做错了什么.
的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>spring-tests</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>3.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>3.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>3.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.2.9</version>
</dependency>
</dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)
src/test/resources/spring-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<jdbc:embedded-database id="dataSource">
<jdbc:script location="classpath:schema.sql" />
<jdbc:script location="classpath:data.sql" />
</jdbc:embedded-database>
</beans>
Run Code Online (Sandbox Code Playgroud)
src/test/resources/schema.sql
create table if not exists …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在我们的 Web 应用程序中实施预身份验证的安全性,但我不确定如何正确执行。没有那么多例子。而那些似乎比我们的设置要简单得多的设置。
我们在请求标头中以 XML 形式获取身份验证详细信息,其中包含名字、姓氏、用户 ID 和错误标记(如果发生)。
我正在扩展AbstractPreAuthenticatedProcessingFilter
并在其getPreAuthenticatedPrincipal()
提取标头,对其进行解组,并进行一些验证。
现在的问题:
getPreAuthenticatedPrincipal()
?PreAuthenticatedCredentialsNotFoundException
吗?getPreAuthenticatedCredentials()
什么地方回来?是否"N/A"
足够?我想在某些时候我还没有创建一个Authentication
和一个Principal
.
这是一个好方法吗?
Principal dynamicUser = new DynamicUser(rijksregisterNummer);
List<SimpleGrantedAuthority> grantedAuthorities = Arrays.asList(new SimpleGrantedAuthority("ROLE_USER"));
Authentication authentication = new AnonymousAuthenticationToken(rijksregisterNummer, dynamicUser, grantedAuthorities);
Run Code Online (Sandbox Code Playgroud)在什么时候(在哪个班级)我在 Spring Security 中设置它?
我还需要扩展哪些其他类?
如何配置 Spring Security 配置 XML?像这样?我错过了什么?
<http>
<custom-filter position="PRE_AUTH_FILTER" ref="myPreAuthFilter" />
</http>
<bean id="myPreAuthFilter" class="my.package.MyPreAuthenticationFilter">
<property name="authenticationManager" ref="authenticationManager"/>
</bean>
<authentication-manager alias="authenticationManager">
<authentication-provider ref="customAuthenticationProvider"/>
</authentication-manager>
Run Code Online (Sandbox Code Playgroud)外部用户通过预认证(使用电子身份证和读卡器),然后点击我们的 Web …
尝试搜索关系的多个值时,会返回重复的结果。
我怎样才能避免这些重复?
我们的服务有一个方法来构建Criteria
:
@Override
protected Criteria createCriteria(Map<String, Object> values) {
Criteria criteria = super.createCriteria(values);
if (criteria != null && values != null) {
// other criteria restrictions
Set<MDTErkenning> erkenningen = (Set<MDTErkenning>) values.get("erkenningen");
if (erkenningen != null && !erkenningen.isEmpty()) {
criteria.createAlias("erkenningen", "erkenningen");
criteria.add(Restrictions.in("erkenningen." + CollectionPropertyNames.COLLECTION_ELEMENTS, erkenningen));
}
}
return criteria;
}
Run Code Online (Sandbox Code Playgroud)
用于获取分页结果并进行计数:
@Override
public List<T> findByCriteria(Map<String, Object> values, int offset, int amount) {
Criteria criteria = createCriteria(values)
.setFirstResult(offset)
.setMaxResults(amount);
return criteria.list();
}
@Override
public Long getCount(Map<String, Object> values) { …
Run Code Online (Sandbox Code Playgroud) 我正在尝试外部化我的用户名和密码,但似乎svn-settings.xml的格式不正确.我在网上找不到任何资源,除了这里的帖子,然后发布错误.
在我的pom.xml中,我得到了
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
...
<configuration>
<connectionUrl>scm:svn:http://my_hostname/im-tools-repos/trunk</connectionUrl>
<checkoutDirectory>${project.build.directory}/checkout/im-tools</checkoutDirectory>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
在C:\ Documents and Settings\my_uid.scm\svn-settings.xml中我得到了
<svn-settings>
<user>my_uid</user>
<password>my_pwd</password>
</svn-settings>
Run Code Online (Sandbox Code Playgroud)
当我运行Maven时,它会失败并显示以下消息:
C:\Documents and Settings\my_uid\.scm\svn-settings.xml isn't well formed. SKIPPED.Unrecognised tag: 'user' (position: START_TAG seen <svn-settings>\r\n\t<user>... @2:7)
[INFO] Executing: cmd.exe /X /C "svn --non-interactive checkout http://my_hostname/im-tools-repos/trunk C:\test\bamboo\agent\target\checkout\im-tools"
[INFO] Working directory: C:\test\bamboo\agent\target\checkout
[ERROR] Provider message:
[ERROR] The svn command failed.
[ERROR] Command output:
[ERROR] svn: OPTIONS of 'http://my_hostname/im-tools-repos/trunk': authorization failed: Could not authenticate to server: …
Run Code Online (Sandbox Code Playgroud) 我试图使用<xs:unique>
和<xs:key>/<xs:keyref>
元素值,但我无法让它工作.如果我用attrubute值来做它就像魅力一样.
的test.xml
<test:config xmlns:test="http://www.example.org/Test"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/Test Test.xsd ">
<test:location id="id1" path="/path2">
<test:roles>
<test:role>role1</test:role>
<test:role>role2</test:role>
<test:role>role2</test:role> <!-- DUPLICATE: FAIL VALIDATION -->
</test:roles>
<test:action name="action1">
<test:roles>
<test:role>role1</test:role>
<test:role>role1</test:role> <!-- DUPLICATE: FAIL VALIDATION -->
<test:role>role3</test:role> <!-- NOT DEFINED: FAIL VALIDATION -->
</test:roles>
</test:action>
</test:location>
</test:config>
Run Code Online (Sandbox Code Playgroud)
我希望确保角色只定义一次,并且在action元素下定义的角色只是在上层定义的角色.
Test.xsd
<xs:element name="config">
<xs:complexType>
<xs:sequence>
<xs:element ref="test:location" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="location" type="test:LocationType">
<xs:key name="keyRole">
<xs:selector xpath="test:roles" />
<xs:field xpath="test:role" />
</xs:key>
<xs:keyref …
Run Code Online (Sandbox Code Playgroud)