小编Koo*_*inn的帖子

如何处理Findbugs"可序列化类中的非瞬态非可序列化实例字段"?

考虑下面的课程.如果我针对它运行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").我的实际代码中有很多集合和列表,我担心它会丢失我的代码太多.

还有更好的方法吗?

java serialization findbugs

53
推荐指数
5
解决办法
6万
查看次数

如何找到依赖于另一个工件的工件?

我们使用Maven构建我们的项目,使用Nexus作为存储库管理器.

有没有办法知道工件在哪里是另一个工件的依赖?

例如,我们想知道我们的Release存储库中的哪些工件依赖于commons-io 1.2或我们的framework2的xy版本,或者......

dependencies maven-2 nexus maven-3 maven

11
推荐指数
1
解决办法
2174
查看次数

嵌入式Glassfish,安全性和Arquillian问题

我想使用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)

security java-ee glassfish-embedded jboss-arquillian

10
推荐指数
1
解决办法
3236
查看次数

Spring Security:部署时出现ClassNotFoundException或IllegalArgumentException

我正在学习Spring,我的Spring Security实验失败了.如果我从Eclipse启动并部署到Tomcat,我会得到一个ClassNotFoundException.将Maven构建WAR部署到独立的Tomcat时,我得到IllegalArgumentException.

我究竟做错了什么?

Spring依赖项:

  • spring-core 3.1.1.RELEASE
  • spring-webmvc 3.1.1.RELEASE
  • spring-security-core 3.1.0.RELEASE
  • spring-security-config:3.1.0.RELEASE
  • spring-security-web 3.1.0.RELEASE

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)

java spring tomcat spring-security

5
推荐指数
1
解决办法
2万
查看次数

为什么Spring的<jdbc:embedded-database>会抛出一个SQLSyntaxErrorException?

我正在学习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)

java junit spring spring-jdbc

5
推荐指数
1
解决办法
9343
查看次数

如何实现Spring的预认证过滤器?

我正在尝试在我们的 Web 应用程序中实施预身份验证的安全性,但我不确定如何正确执行。没有那么多例子。而那些似乎比我们的设置要简单得多的设置。

我们在请求标头中以 XML 形式获取身份验证详细信息,其中包含名字、姓氏、用户 ID 和错误标记(如果发生)。

我正在扩展AbstractPreAuthenticatedProcessingFilter并在其getPreAuthenticatedPrincipal()提取标头,对其进行解组,并进行一些验证。

现在的问题:

  • 如果一切正常,我是不是把我未编组的 shibboleth 从 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 …

java spring web-applications spring-security

5
推荐指数
1
解决办法
2万
查看次数

如何防止 Hibernate 中的重复结果?

尝试搜索关系的多个值时,会返回重复的结果。

我怎样才能避免这些重复?

我们的服务有一个方法来构建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)

java hibernate criteria hibernate-criteria

5
推荐指数
1
解决办法
1万
查看次数

用于Maven SCM插件的svn-settings.xml的格式是什么?

我正在尝试外部化我的用户名和密码,但似乎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)

svn maven-2 maven-scm

3
推荐指数
1
解决办法
1万
查看次数

XSD:如何在元素值中使用"unique"和"key"/"keyref"?

我试图使用<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)

xml schema xsd

2
推荐指数
1
解决办法
9925
查看次数