小编Jin*_*won的帖子

在单元测试中打印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
查看次数

如何从外部块中重新抛出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
查看次数

如何使用JAXB注释字符串列表?

说我有以下内容:

@XmlRootElement(name = "foo1")
public class Foo1
{
    @XmlElementWrapper( name="answerList" )
    @XmlElement( name="answer" )
    private List<String> answerList;
}
Run Code Online (Sandbox Code Playgroud)

如果Foo1实例被编组,它将看起来像这样

<foo1>
    <answerList>
        <answer>myAnswer1</answer>
        <answer>myAnswer2</answer>
    </answerList>
</foo1>
Run Code Online (Sandbox Code Playgroud)

现在,如果我有以下属性:

private List<List<String>> answerListsList;
Run Code Online (Sandbox Code Playgroud)

我如何注释上面的属性,所以我将有以下XML(当然,没有创建一个新类来保存字符串列表)?

<foo1>
    <answerLists>
        <answerList>
            <answer>row1 myAnswer1</answer>
            <answer>row1 myAnswer2</answer>
        </answerList>
        <answerList>
            <answer>row2 myAnswerA</answer>
            <answer>row2 myAnswerB</answer>
        </answerList>
    <anserLists>
</foo1>
Run Code Online (Sandbox Code Playgroud)

编辑:

不想创建新类的原因是我试图避免创建太多类.在我看来,为你可能拥有的每个字符串列表创建一个新类,它碰巧使用不同的元素名称,这不是一个好的设计.

我可以考虑创建一个新类作为答案,只要该类可以根据需要编组到不同的元素名称和元素包装器中.例如,该类应该能够表示以下XML:

<answerLists>
    <answerList>
        <answer>row1 myAnswer1</answer>
        <answer>row1 myAnswer2</answer>
    </answerList>
    <answerList>
        <answer>row2 myAnswerA</answer>
        <answer>row2 myAnswerB</answer>
    </answerList>
<anserLists>
Run Code Online (Sandbox Code Playgroud)

要么

<myLists>
    <myList>
        <item>row1 d1</item>
        <item>row1 d2</item>
    </myList>
    <myList>
        <item>row2 dA</item>
        <item>row2 dB</item>
    </myList>
</myLists>
Run Code Online (Sandbox Code Playgroud)

java xml annotations jaxb marshalling

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

通用工厂方法惯例

让我说有一个抽象类看起来像

abstract class Parent<V> {

    protected static <T extends Parent<V>, V> T newInstance(
        final Class<T> type, final V value) {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在以下Child类中

class Child extends Parent<XXX> {

    public static Child newInstance1(final XXX value) {
        // ...
    }

    public static Parent<XXX> newInstance2(final XXX value) {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

哪个更好?newInstance1还是newInstancw2

java generics

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

是否在没有警告的情况下转换泛型类型?

我有一个长话。

java泛型边界类型

泛型类型声明以进行反射

无论如何,我有一个使用反射调用方法并返回通用结果的方法。

public static <V> JAXBElement<V> unmarshal(..., Class<V> valueType);
Run Code Online (Sandbox Code Playgroud)

问题(?)是当我得到方法调用的结果时。我必须抛弃它。

final Object result = method.invoke(...);
Run Code Online (Sandbox Code Playgroud)

我发现我可以投中resultJAXBElement<V>这个样子。

final Object result = method.invoke(...);
Run Code Online (Sandbox Code Playgroud)

还有其他方法吗?我的意思是我Class<V> valueType可以使用了。

如果不是,以下陈述是否有点cumbersome

@SuppressWarnings("unchecked")
final JAXBElement<V> result = (JAXBElement<V>) method.invoke(...);
return result;
Run Code Online (Sandbox Code Playgroud)

谢谢。

java generics reflection jaxb

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

如何启用MultiPartFeature?

我的JAX-RS应用程序有一个扩展的Application类.

@ApplicationPath("/")
public class MyApplication extends Application {
    // empty; really empty
}
Run Code Online (Sandbox Code Playgroud)

如何在org.glassfish.jersey.media.multipart.MultiPartFeature不修改课程的情况下启用?或者没有必要注册所有资源类/包?

multipartform-data jax-rs multipart jersey jersey-2.0

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

为什么@AssertTrue在@NotNull工作时不起作用?

我正在研究一个实体库.我在我的实体上添加了一些bean验证注释.

我坚信在类路径上有一个bean验证实现. @javax.validation.constraints.NotNull工作,@javax.validation.constraints.AssertTrue不起作用.

class MyEntity {

    @AssertTrue // does't work
    public boolean hey() {
        return false;
    }

    @NotNull // works; violation while persist
    private String some;
}
Run Code Online (Sandbox Code Playgroud)

我可能做错了什么?

我使用org.hibernate:hibernate-validator和更改它org.apache.bval:bval-jsr没有任何区别.

UPDATE

实际上是调用该方法.我检查日志.

这是我的方法.

@AssertTrue(message = "a property must be eclusively system or owned")
private boolean execlusivelySystemOrOwned() {
    logger.info("execlusivelySystemOrOwnded()");
    final boolean result = system ^ (getOwner() != null);
    logger.log(Level.INFO, "result: {0}", result);
    return result;
}
Run Code Online (Sandbox Code Playgroud)

java hibernate-validator bean-validation

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

@PostRemove退出事务了吗?

我从规范中发现了以下信息。但是对于我不是英国人的我来说还不够清楚。

PostPersistPostRemove调用回调方法为一个实体的实体已变得持久或删除后。这些回调还将在这些操作所级联的所有实体上调用。该PostPersistPostRemove方法将在数据库中插入和删除分别操作之后被调用。这些数据库操作可以在调用持久,合并或删除操作之后直接发生,也可以在发生刷新操作之后立即发生(可能在事务结束时)。该PostPersist方法中提供了生成的主键值。

我的问题是,任何与交易相关的工作可以在之后回滚@PostRemove吗?

假设我的实体删除了一些离线文件 @PostRemove

class MyEntity {

    @PostRemove
    private void onPostRemove() {
        // delete offline files related to this entity
        // not restorable!
    }
}
Run Code Online (Sandbox Code Playgroud)

这些脱机文件是否有可能从存储中删除,而实体仍保留在数据库中?(通过回滚?)

lifecycle jpa

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