小编Dhe*_*rik的帖子

我无法设置我的jndi.properties来访问Jboss 5上的远程EJB

我正在尝试设置Jboss服务器"客户端"(版本5.1.0)以使用来自另一个Jboss服务器(10.90.0.91)的远程EJB,但我不能使用Jboss客户端上的jndi.properties文件来执行此操作.

我可以在客户端上使用这个简单的代码获取远程EJB:

        InitialContext ctx = null;
        try {
            Hashtable<String, String> jndiProps = new Hashtable<String, String>();
            jndiProps.put(InitialContext.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
            jndiProps.put(InitialContext.PROVIDER_URL, "jnp://10.90.0.91:1099");
            ctx = new InitialContext(jndiProps);
            return ctx.lookup(jndiName);
        } catch (NamingException e) {
            throw new RuntimeException(e);
        }
Run Code Online (Sandbox Code Playgroud)

这很好用.

现在我想用这个属性设置Jboss客户端.但是,如果我编辑本地化的现有jndi.properties文件server/{application}/conf/:

# DO NOT EDIT THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING
#
java.naming.factory.initial=org.jboss.iiop.naming.ORBInitialContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
Run Code Online (Sandbox Code Playgroud)

至:

# DO NOT EDIT THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING
#
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=jnp://10.90.0.91:1099
Run Code Online (Sandbox Code Playgroud)

当我启动Jboss客户端时,我收到一些错误(显然,我不知道我在做什么:)):

2016-08-19 10:17:41,645 ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController] (main) Error installing to …
Run Code Online (Sandbox Code Playgroud)

java jboss ejb jboss5.x ejb-3.0

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

可以在POST中返回http状态404吗?

我正在开发一个API,我总是尝试为每个场景使用最正确的http状态代码.

其中一种情况是POST请求的响应.例如,端点的POST方法/orders/接收一些信息,如customer:

{
  customerDocument: {number: "123.456.789"},
  // other informations for create a order
}
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:如果numbercustomerDocument不存在,是否可以将返回一个404个一个不错的消息,通知客户并没有找到状态码错误?

我通常在特定资源中使用404仅用于GET(最明显的用法),例如:

/customers/{number}/
Run Code Online (Sandbox Code Playgroud)

在诸如"客户不活跃"的业务验证中,我通常使用http状态代码422进行任何http方法(POST,PUT,GET等).我有疑问是否可以使用404或422作为我的POST示例.

rest post http

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

堆转储中有很多休眠查询。我怎样才能限制?

我正在处理一个包含数百个休眠实体和EAGER关联的大型应用程序。当我启动这个应用程序时,内存消耗非常高(超过 1 GB)。

查看刚刚启动的应用程序的JVM heap dump,分析了解到,大部分内存被来自应用程序不同实体的char[]不同SELECT语句所占用。

我想 thisSELECT是由 Hibernate 的查询计划缓存生成的。

我想为开发环境限制此缓存的大小。我试图用一些属性来限制大小:

"hibernate.query.plan_cache_max_size", "16" //default is 2048
"hibernate.query.plan_parameter_metadata_max_size", "16" //default is 128
Run Code Online (Sandbox Code Playgroud)

但是内存消耗没有区别。

我应该怎么做来限制 Hibernate 查询的缓存?

我正在使用 Hibernate 5.0.10。

java hibernate heap-memory heap-dump

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

如何管理多个微服务并在开发(非测试)环境中模拟它们?

我正在使用Spring Boot 1.5.9,我们有一个与另一个微服务连接的微服务.

对于集成测试和开发(开发人员计算机),我想模拟/存根为其他微服务进行的其余调用.对于单元/集成测试,这个问题已经多次得到解答:WireMock,MockBean和MockRestServiceServer都是很好的工具.但对于开发,我正试图找出最好的方法.

为什么?启动实际微服务所依赖的每个微服务是一个问题.因此,我们的想法是让微服务独立,并且无需在开发人员的机器或其他地方运行任何其他服务器即可启动.因此,一个简单的`mvn spring-boot run'足以启动我的微服务并且无需担心其他微服务就可以工作.

所以,我的问题是:开发中模拟/存根休息调用的推荐方法是什么?在这种情况下,Wiremock也是一个很好的方法吗?

我的项目

我有两个配置文件src/main/java/resources/:'default'(application.properties,用于另一个环境)和'dev'(application-dev.properties,用于开发).

在我的tests(src/test/java/resources/)中,我只有一个application.properties,它是application-dev.properties的基本副本.

我已经尝试使用Wiremock进行集成测试并且运行良好.但我也不想将它用于开发,因为我不太喜欢在我的JAR中引入仅用于开发的依赖项.我的意图是使用相同的策略来集成测试和开发.

那么,有什么选择呢?

java rest spring development-environment mocking

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

每次在 Spring 上测试后重置数据库而不使用 DirtiesContext

我想知道是否有某种方法可以在每次集成测试后重置数据库而无需@DirtiesContext:

@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
Run Code Online (Sandbox Code Playgroud)

这可行,但速度非常慢,因为每次测试都会重新加载 Spring 上下文。

我的测试使用MockMvc,对 API 进行剩余调用。喜欢:

mockMvc.perform(put("/products/)
            .header("Content-Type", "application/json")
            .content(jsonPost))
            .andExpect(status().isOk())
            .andReturn();
Run Code Online (Sandbox Code Playgroud)

那么,在没有手动干预(创建和维护脚本来删除和创建表)的情况下,Spring 框架提供了一些替代方案吗?

database spring integration-testing

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

JPQL 查询删除不接受声明的 JOIN?

我试图理解为什么 Hibernate 不接受这个遵循 JPQL:

@Modifying
@Query("delete from Order order JOIN order.credit credit WHERE credit.id IN ?1")
void deleteWithListaIds(List<Long> ids);
Run Code Online (Sandbox Code Playgroud)

我收到的错误是:

Caused by: java.lang.IllegalArgumentException: node to traverse cannot be null!
    at org.hibernate.hql.internal.ast.util.NodeTraverser.traverseDepthFirst(NodeTraverser.java:46)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:284)
Run Code Online (Sandbox Code Playgroud)

但接受这一点:

@Modifying
@Query("delete from Order order WHERE order.credit.id IN ?1")
void deleteWithListaIds(List<Long> ids);
Run Code Online (Sandbox Code Playgroud)

实体Order(实体Credit不映射Orders):

@Entity
public class Order {

    @Id
    @Setter
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = SEQUENCE)
    @SequenceGenerator(name = SEQUENCE, sequenceName = SEQUENCE, allocationSize = 1)
    @Column(name = "id", nullable = …
Run Code Online (Sandbox Code Playgroud)

jpa hql jpql spring-data-jpa sql-delete

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

不能将 Tuple 类用于本机查询

我正在使用 Spring Boot1.5.13.RELEASE并尝试使用javax.persistence.Tuple来接收来自本机查询的结果,例如:

Query q = em.createNativeQuery(QUERY_STRING, Tuple.class);
q.setParameter(1, param1);
q.getResultList();
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误getResultList

org.hibernate.MappingException: Unknown entity: javax.persistence.Tuple
Run Code Online (Sandbox Code Playgroud)

根据一些链接,这应该有效。

那么,如何使用Tupleon native 查询呢?是否可以?

谢谢!

sql hibernate tuples dto nativequery

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

groovy.lang.MissingPropertyException: 没有这样的属性: buildJobArray for class: groovy.lang.Binding

我是 groovy 的新手。在这里,我声明了一些列表并使用 def 关键字并在函数中使用它来触发作业并将其存储在列表中但它抛出错误:

MissingPropertyException 没有这样的属性:buildJobArray for class:groovy.lang.Binding

即使我声明了一个列表。我不明白我的代码有什么问题

        def triggerBuildArray = []
        def buildJobArray = []
        def jobArray = []
        def paramsArray = []
        def noOfJob = 2 

        //function to trigger job

        def triggerJob(def job, def params, def jobNo) {
        
        buildJobArray << job.scheduleBuild2(0, new Cause.UpstreamCause(build), new ParametersAction(params))

        println"triggered job "+jobNo;
        println"waiting for completion of job "+jobNo;

       }

        jobArray << Hudson.instance.getJob('job1');


        //define parameters

        paramsArray << [            
        new StringParameterValue('baseurl',build.getEnvironment(listener).get('ORAbaseurl')),
        new StringParameterValue('firm',build.getEnvironment(listener).get('ORAfirm')),
        new StringParameterValue('loginname',build.getEnvironment(listener).get('ORAloginname'))
                
        ]

        for(int i=0;i<noOfJob;i++)
        {
            triggerJob(jobArray[i],paramsArray[i],i+1);

        }
Run Code Online (Sandbox Code Playgroud)

但它给出了错误 …

groovy jenkins

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

RESTful api 中的排序和排序

我想允许用户选择他们想要排序的属性,然后选择是按升序还是降序排序。

例如,要根据标题和降序排序,您可以像这样调用 api:

api/blogs?sortBy=title&orderBy=desc
Run Code Online (Sandbox Code Playgroud)

这是执行此操作的最佳方法吗?

我在网上找不到任何有用的东西,大多数帖子都解释说排序依据和排序依据基本上是同一件事。

对此,人们有何看法?

api rest

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

在 PreAuthorize 注释中模拟方法调用

 @Test
 public void getValueTest() throws Exception {
     Request request = new Request();
     Response response = new Response();
 }
Run Code Online (Sandbox Code Playgroud)

服务等级:

@PreAuthorize("(hasRole(@role.one) or (hasRole(@role.two) or hasRole(@role.three))) and @role.check(#requestObject)")
public Response getValue(Request requestObject) {
}
Run Code Online (Sandbox Code Playgroud)

CheckRole 类:

public boolean checkReturn(Request requestObject) {
    Boolean response = true;
    List<ReturnValueType> returnValueType = requestObject.getReturnType();
    String role = Validator..getRole();

    return response;
 }
Run Code Online (Sandbox Code Playgroud)

checkReturn由于 Validator 没有任何角色,因此模拟在java 方法中失败。

有没有办法模拟预授权注释中的方法调用?模拟整个 Role.java 不起作用,因为它在其他情况下失败了。

jmockit spring-security mockito

5
推荐指数
0
解决办法
555
查看次数