小编Say*_*eji的帖子

如何使用Hibernate映射byte []属性?

我正在使用Hibernate/Java将实体持久化到数据库.该实体有一个密码字段,它是一个字符串.在我的应用程序中注册用户时,我使用SHA-1哈希密码(我承认这有点弱).这将产生一个字节[]我再转换为字符串使用 new String(byte[] arr); 每当我想在注销用户,我只是从数据库中检索哈希密码(如字符串),并将其与输入密码的摘要在登录时使用比较 hashedPasswordFromDatabase.equals(SHA1_HASH(inputPassword));

这工作完全在我的开发系统(Windows 7中,JDK 1.6.0_23/JDK 1.7中,MySQL 5.5,Tomcat的6.0.26),但在我们的服务器上部署它(在Linux上运行JDK 1.6)中,等号方法从不计算真实的,即使对于相同的密码.我快速设置了一个新的开发系统(Ubuntu 12.04,MySQL 5.5,JDK 1.7.0_03,Tomcat 7.0.22),它也不能在那里工作.

我知道String类文档中针对String类所述的可能的编码问题,并且在SO的几个地方也有说明.我在这个论坛上尝试了几种编码(例如Base64,Latin-1),最后我得到了UnsupportedEncodingException.我想我最好避免String转换.那么我如何设计我的数据库,以便Hibernate生成的实体类为密码字段而不是字符串提供byte []

java string encoding hibernate sha1

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

为什么java.util.Arraylist #clear以OpenJDK中的方式实现?

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/ArrayList.java#473

public void clear() {
    modCount++;

    // Let gc do its work
    for (int i = 0; i < size; i++)
        elementData[i] = null;

    size = 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么他们必须通过支持数组{O(n)}进行循环才能使每个元素有资格进行垃圾回收,因为它们可以重新初始化后备数组,从而丢弃对整个数组的引用{ O(1)}并使其有资格进行垃圾收集?O(n)表现对clear()我来说似乎不太好或者我错过了什么?

java performance openjdk

7
推荐指数
1
解决办法
302
查看次数

如何将JMS消息从WildFly 10发送到远程ActiveMQ

在互联网上如此笨拙之后,令人惊讶的是,我找不到使用带有ActiveMQ(Artemis)的WildFly 10中的JMS推送到远程消息队列的示例配置.为了恶化这种情况standalone-full.xml并不局限于一个模式(为什么???),当我最终在GitHub上找到它的XSD时,它不包含任何文档,说明每个节点/属性的含义以及可以放入什么值.

以下是standalone-full.xml的原始配置.

    <subsystem xmlns="urn:jboss:domain:messaging-activemq:1.0">
      <server name="default">
        <security-setting name="#">
          <role name="guest" delete-non-durable-queue="true" create-non-durable-queue="true" consume="true" send="true"/>
        </security-setting>
        <address-setting name="#" message-counter-history-day-limit="10" page-size-bytes="2097152" max-size-bytes="10485760" expiry-address="jms.queue.ExpiryQueue" dead-letter-address="jms.queue.DLQ"/>
        <http-connector name="http-connector" endpoint="http-acceptor" socket-binding="http"/>
        <http-connector name="http-connector-throughput" endpoint="http-acceptor-throughput" socket-binding="http">
          <param name="batch-delay" value="50"/>
        </http-connector>
        <in-vm-connector name="in-vm" server-id="0"/>
        <http-acceptor name="http-acceptor" http-listener="default"/>
        <http-acceptor name="http-acceptor-throughput" http-listener="default">
          <param name="batch-delay" value="50"/>
          <param name="direct-deliver" value="false"/>
        </http-acceptor>
        <in-vm-acceptor name="in-vm" server-id="0"/>
        <jms-queue name="ExpiryQueue" entries="java:/jms/queue/ExpiryQueue"/>
        <jms-queue name="DLQ" entries="java:/jms/queue/DLQ"/>
        <connection-factory name="InVmConnectionFactory" entries="java:/ConnectionFactory" connectors="in-vm"/>
        <connection-factory name="RemoteConnectionFactory" entries="java:jboss/exported/jms/RemoteConnectionFactory" connectors="http-connector"/>
        <pooled-connection-factory name="activemq-ra" transaction="xa" entries="java:/JmsXA java:jboss/DefaultJMSConnectionFactory" connectors="in-vm"/>
      </server>
    </subsystem> …
Run Code Online (Sandbox Code Playgroud)

activemq-classic jms wildfly wildfly-10 activemq-artemis

6
推荐指数
2
解决办法
9619
查看次数

Hibernate/MySQL连接超时

我写了一个服务器端应用程序,为网站和多个移动客户端提供支持.我使用Hibernate进行数据访问.我后来发现应用程序在一天后失败了!当我在网上查看时,我发现它是一个众所周知的问题,MySQL在8小时后终止了"陈旧"的连接.为了避免这种情况,我发现了许多建议,比如包括?autoReconnect=true,使用c3P0等.由于autoReconnect正式气馁(特别是在生产环境中),并且因为它在我应用时没有任何效果,我决定去c3p0.不幸的是,c3p0在我的hibernate.cfg.xml文件中引入配置后,应用程序开始NullPointerException在我的代码中抛出一个我调用的地方.dbSession.close() 这意味着HibernateUtil.getSessionFactory()实际返回null.我添加了所需的jar(c3p0-0.9.2-pre2.jar,hibernate-core-3.3.1.GA.jar,hibernate-c3p0-3.3.2.GA.jar,mchange-commons-java-0.2.1 .jar和c3p0-oracle-thin-extras-0.9.2-pre2.jar)即使我不认为所有这些都是必需的.我已经浏览了许多讨论过这个问题的网页,但我仍然无法正确设置它.请帮助我使用"初学者友好"易于实现的逐步程序来设置c3p0Hibernate.我在JDK 1.6,MySQL 5.5上使用Hibernate 3.3.6,我在Netbeans 7.0中开发.

这是我的 hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/religion_app</property>
    <property name="hibernate.connection.username">*****</property>
    <property name="hibernate.connection.password">*****</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.current_session_context_class">thread</property>
    <property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>

    <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
    <property name="connection.autoReconnect">true</property>
    <property name="connection.autoReconnectForPools">true</property>
    <property name="connection.is-connection-validation-required">true</property>

    <!-- configuration pool via c3p0-->
    <property name="c3p0.acquire_increment">1</property> 
    <property name="c3p0.idle_test_period">120</property> <!-- seconds --> 
    <property …
Run Code Online (Sandbox Code Playgroud)

java mysql hibernate connection-pooling c3p0

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

无法在使用 Arquillian 和 WildFly 的 JPA 集成测试中注入 EntityManager

我正在尝试使用以下堆栈进行集成测试:

App server: Embedded WildFly
CDI container: Weld
Database: In-memory H2
ORM: Hibernate/JPA
Platform: Java 8
OS: Mac OS X 10.10
Run Code Online (Sandbox Code Playgroud)

我已经使用 Arquillian 设置了基本的集成测试(如此处所示,并且我能够注入依赖项,但注入EntityManager被证明是一个挑战。取消引用实体管理器字段始终会产生NullPointerException.

我看过很多文章(包括这篇这篇),但我仍然无法让这个看似简单的事情发挥作用。

请看下面我的pom.xml

  <dependencies>
    <dependency>
      <groupId>org.jboss.spec</groupId>
      <artifactId>jboss-javaee-7.0</artifactId>
      <version>1.0.0.Final</version>
      <type>pom</type>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.1</version>
      <scope>test</scope>
    </dependency>

    <!-- JUnit Container Implementation for the Arquillian Project -->
    <dependency>
      <groupId>org.jboss.arquillian.junit</groupId>
      <artifactId>arquillian-junit-container</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.jboss.arquillian.protocol</groupId>
      <artifactId>arquillian-protocol-servlet</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.jboss.arquillian.container</groupId>
      <artifactId>arquillian-weld-ee-embedded-1.1</artifactId>
      <version>1.0.0.CR3</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.jboss.arquillian.extension</groupId>
      <artifactId>arquillian-persistence-dbunit</artifactId>
      <version>1.0.0.Alpha7</version> …
Run Code Online (Sandbox Code Playgroud)

integration-testing jpa maven jboss-arquillian wildfly

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

使用App Engine查询游标(Java - JDO)

我需要在我的结果提取中实现分页,所以在浏览时,我在Google Developer网站上获得了Query Cursors的链接,但文章解释了使用低级API的Query Cursors的使用(我避免像瘟疫这样的事情) .我在JDO上看到的所有setRange(start, end)内容(如果我是对的)都不是那么有效,因为你仍然需要支付在获取和丢弃范围之前的结果所涉及的开销.如何在App Engine数据存储区之上使用JDO中的Query Cursors?

java google-app-engine jdo google-cloud-datastore

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

为什么JFrame,JDialog,JApplet(来自JRootPane)重量级

我知道为什么这些组件被称为重量级组件.我真正感兴趣的是为什么它们没有实现为轻量级.谢谢

java swing jframe

0
推荐指数
1
解决办法
381
查看次数