小编Jin*_*won的帖子

JAXB应该从`beforeMarshal(Marshaller)方法返回什么?

首先,我不是在谈论Marshaller#Listener.我在谈论那些class defined事件回调.

谁能告诉我应该从boolean beforeMarshal(Marshaller)方法中返回什么?

/**
 * Where is apidocs for this method?
 * What should I return for this?
 */
boolean beforeMarshal(Marshaller marshaller);
Run Code Online (Sandbox Code Playgroud)

我的意思是,无论如何,用于转换这种方法JPA's Long @Id to JAXB's String @XmlID 与JAXB-RI无莫西.

[编辑]一个void版本似乎工作.这只是一个文档问题吗?

java jaxb

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

键'PRIMARY'重复输入'...'

正如你和我都知道的那样,关于这种错误信息有很多问题.

但我找不到任何好的答案,因为答案太多了.

我有一个存储nonce客户端发送的表.

但有时(偶尔)db会抱怨重复的主键插入,即使没有完全相同主键的记录也是如此.

这是JVM显示的内容.

[#|2012-11-09T11:06:52.098+0900|WARNING|glassfish3.1.2|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=236;_ThreadName=Thread-2;|EJB5184:A system exception occurred during an invocation on EJB Nonce2Bean, method: public java.lang.Object kr.co.ticomms.gameground.business.AbstractEntityFacade.persist(java.lang.Object)|#]

[#|2012-11-09T11:06:52.099+0900|WARNING|glassfish3.1.2|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=236;_ThreadName=Thread-2;|javax.ejb.EJBException
        ...
Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'c8b4bdb84606fed0-c8b4bdb84606fed0_1352426820765_1880007534138556' for key 'PRIMARY'
Error Code: 1062
Call: INSERT INTO NONCE2 (NONCE, UDID, CREATED_DATE) VALUES (?, ?, ?)
        bind => [3 parameters bound]
Query: InsertObjectQuery(c8b4bdb84606fed0/c8b4bdb84606fed0_1352426820765_1880007534138556402)
        ...
        ... 29 more
Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: …
Run Code Online (Sandbox Code Playgroud)

mysql innodb primary-key

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

是否可以使用Spring的redis抽象创建多个缓存存储?

我正在使用Spring MVC开发一个Web应用程序,我正在使用Spring的缓存抽象与Redis来缓存我的数据库查询.但我无法使用创建多个缓存存储@Cacheable.

@Cacheable("acache")
public String atest(int i) {
   return "a";
}

@Cacheable("bcache")
public String btest(int i) {
   return "b";
}

...
...
String s = atest(1);
String r = btest(1);
Run Code Online (Sandbox Code Playgroud)

使用Redis的,既sr具有相同的价值" a".即使我将这两种方法缓存在不同的缓存中,它似乎也没有效果.

但是当我使用Spring时,这种方法很好用SimpleCacheManager.

Redis的Spring bean配置:

<cache:annotation-driven />

<bean id="jedisConnectionFactory"
        class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
        p:hostName="${redis.host-name}"
        p:port="${redis.port}"
        p:usePool="true"/>


<bean id="redisTemplate"
        class="org.springframework.data.redis.core.RedisTemplate"
        p:connectionFactory-ref="jedisConnectionFactory"/>

<bean id="cacheManager"
        class="org.springframework.data.redis.cache.RedisCacheManager"
        c:template-ref="redisTemplate">
</bean>
Run Code Online (Sandbox Code Playgroud)

spring caching spring-mvc redis

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

如何从字节数组创建IntStream?

我已经知道只有IntStreamLongStream.如何IntStream从字节数组中创建一个?

目前我打算这样做.

static int[] bytesToInts(final byte[] bytes) {
    final int[] ints = new int[bytes.length];
    for (int i = 0; i < ints.length; i++) {
        ints[i] = bytes[i] & 0xFF;
    }
    return ints;
}

static IntStream bytesToIntStream(final byte[] bytes) {
    return IntStream.of(bytesToInt(bytes));
}
Run Code Online (Sandbox Code Playgroud)

有没有更简单或更快的方法来做到这一点?

lambda java-8 java-stream

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

EclipseLink @MappedSuperclass和泛型

我的Web应用程序中有一些域模型类,它们与自己有层次关系.一个示例是用于对用户发布进行分类的分层类别结构.

有一些逻辑与这些类的层次性有关,这是常见的.所以我试图将逻辑移到一个通用的@MappedSuperclass注释超类中.

就像是 :

@MappedSuperclass
public abstract class HierarchicalBaseEntity<N extends HierarchicalBaseEntity<N>>
        extends BaseEntity {

    @ManyToOne(optional=true)
    @JoinColumn(name="parent")
    private N parent;

    private int depth;

    public N getParent() { ...
    public void setParent(N newParent) { ...

    public boolean isRoot() { ...
    public int getDepth() { ...

    public boolean isDescendantOf(N ancestor) { ...
    public static <N extends HierarchicalBaseEntity<N>> N getCommonAncestor(N a, N b) { ...
    public static <N extends HierarchicalBaseEntity<N>> Collection<N> reduceToCommonAncestors(Collection<N> entities) { ...
}
Run Code Online (Sandbox Code Playgroud)

然后子类扩展HierarchicalBaseEntity,将自己作为泛型类型N:

@Entity
public class CategoryBean extends HierarchicalBaseEntity<CategoryBean> { …
Run Code Online (Sandbox Code Playgroud)

java generics eclipselink mappedsuperclass

6
推荐指数
1
解决办法
4326
查看次数

在单元测试中打印Jersey JSON

有没有简单的方法

  • 打印JAXB带注释的实例
  • 采用JSON格式(正如球衣将在AS中打印)
  • 在运行单元测试时
  • 没有任何嵌入式服务器推出

我可以使用JAXBContext,Marshaller等运行并查看XML.

JSON有什么例子吗?


我找到了.它类似于JAXB.

使用Jersey API

final JSONJAXBContext context = new JSONJAXBContext(...);

final JSONMarshaller marshaller = context.createJSONMarshaller();
marshaller.marshallToJSON(...);

final JSONUnmarshaller unmarshaller = context.createJSONUnmarshaller();
final T unmarshalled = unmarshaller.unmarshalJAXBElementFromJSON(
        ..., T.class).getValue();
Run Code Online (Sandbox Code Playgroud)

对于Maven

<dependency>
  <groupId>com.sun.jersey</groupId>
  <artifactId>jersey-json</artifactId>
  <scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

json jaxb jersey

6
推荐指数
1
解决办法
2150
查看次数

如何将EJB注入SOAPHandler?

我的JAX-WS战争包含以下条目.

WEB-INF/lib/
WEB-INF/beans.xml // empty
WEB-INF/lib/commons-logging-1.1.1.jar
WEB-INF/lib/corrs-beans-1.0-alpha-1-SNAPSHOT.jar // EJBs are here
WEB-INF/lib/corrs-entities-1.0-alpha-1-SNAPSHOT.jar
WEB-INF/lib/joda-time-1.6.2.jar
WEB-INF/lib/opensaml-2.5.1-1.jar
WEB-INF/lib/openws-1.4.2-1.jar
WEB-INF/lib/slf4j-api-1.6.1.jar
WEB-INF/lib/wss4j-1.6.8.jar
WEB-INF/lib/xmlsec-1.5.3.jar
WEB-INF/lib/xmltooling-1.3.2-1.jar
WEB-INF/web.xml
META-INF/maven/
META-INF/maven/kr.co.ticomms.corrs/
META-INF/maven/kr.co.ticomms.corrs/corrs-services/
META-INF/maven/kr.co.ticomms.corrs/corrs-services/pom.xml
META-INF/maven/kr.co.ticomms.corrs/corrs-services/pom.properties
Run Code Online (Sandbox Code Playgroud)

我的一个SOAPHandler试图调用EJB.

@HandlerChain(file=...)
@WebService(...)
public class MyService {
}

public class MyHandler implements SOAPHandler<SOAPMessageContext> {

    @Override
    public boolean handleMessage(final SOAPMessageContext context) {
        // MyEJB null
    }

    @Inject
    private MyEJB myEJB; // << NULL
}
Run Code Online (Sandbox Code Playgroud)

MyEJB只是一个非接口视图EJB.

@LocalBean
@Stateless
public class MyEJB {
}
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我如何将EJB注入SOAPHandlers吗?

更新/(也许)答案

我改变@Inject@EJB,它的工作原理.

有没有办法合作@Inject?我看起来更好.:)

ejb jax-ws cdi

6
推荐指数
1
解决办法
3074
查看次数

如何重用带有参数的SQL片段?

我打算制作一个片段,用于重用参数.

<insert ...>
  <selectKey keyProperty="id" resultType="_long" order="BEFORE">
    <choose>
      <when test="_databaseId == 'derby'">
        VALUES NEXT VALUE FOR SOME_ID_SEQ
      </when>
      <otherwise>
        SELECT SOME_ID_SEQ.NEXTVAL FROM DUAL
      </otherwise>
    </choose>
  </selectKey>
  INSERT INTO ...
</insert>
Run Code Online (Sandbox Code Playgroud)

我可以使用参数创建SQL片段吗?

<sql id="selectKeyFromSequence">
  <selectKey keyProperty="id" resultType="_long" order="BEFORE">
    <choose>
      <when test="_databaseId == 'derby'">
        VALUES NEXT VALUE FOR #{sequenceName}
      </when>
      <otherwise>
        SELECT #{sequenceName}.NEXTVAL FROM DUAL
      </otherwise>
    </choose>
  </selectKey>
</sql>
Run Code Online (Sandbox Code Playgroud)

这样我可以像这样重用它们吗?

<insert ...>
  <include refid="...selectKeyFromSequence"/> <!-- How can I pass a parameter? -->
  INSERT INTO ...
</insert>
Run Code Online (Sandbox Code Playgroud)

这可能吗?

ibatis mybatis

6
推荐指数
1
解决办法
5862
查看次数

如何从外部块中重新抛出lambda块中的异常?

使用以下代码,

void key(Key) throws SomeCheckedException {
}

void supplier(Supplier<Key> s) throws SomeCheckedException {
    ofNullable(s).ifPresent(s -> {                   //    |
        try {                                        //    |
            key(s.get());                            //    |
        } catch (final SomeCheckedException sce) {   //    |
            // sce is coming from key() method       //    |
            // How can I throw sce for outer method? //  --/
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

我怎么能sce像方法(supplier)方法抛出它一样抛出?

请注意,上面的代码只是一个例子.我需要在key(s.get())lambda表达式中.

void supplier(Supplier<Key> s) throws SomeCheckException {
    key(s.get());
}
Run Code Online (Sandbox Code Playgroud)

java lambda exception-handling java-8

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

如何验证 Pageable 的大小?

我正在使用org.springframework.data.domain.Pageable和我的@RestController.

如何验证或限制页面大小?

没有任何验证,当客户使用sizeof调用时10000。实际pageSize2000

我认为,这可能会导致最后一页出现错误信号。

我如何验证它并通知客户?说400?

spring pagination spring-mvc

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