标签: java-ee-7

从实例到其自己的类的类转换失败的可能原因?

IE:com.adms.fcl3.entity.User无法强制转换为com.adms.fcl3.entity.User

自从将项目从EJB/ManagedBeans迁移到CDI以来,我开始遇到这种错误,所以我的猜测是AoP/Injection混乱了类.

但我没有证据证明这一点.也没有解决方案.

负责的代码:

public User getByLoginPasswdValid(String login, String passwd) {
    TypedQuery<User> q = em.createNamedQuery("User.findByLoginPasswdValid", User.class);
    q.setParameter("login", login);
    q.setParameter("passwd", passwd);
    List<User> results = q.getResultList();
    if (results.isEmpty()) {
        return null;
    }
    return results.get(0);
}
Run Code Online (Sandbox Code Playgroud)

失败了return results.get(0);.Debuger向我确认该列表有效,具有User对象,具有适当的值等...

java jpa cdi java-ee-7

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

javax:javaee-api-6.0 包含没有方法体的非抽象类

我对 Java EE 还很陌生,当我查看编译后的代码时(我找不到 javax:javaee-api-6.0 的源代码),我注意到了这个类。

package javax.servlet;

import java.util.EventObject;

public class ServletContextEvent extends EventObject
{
  public ServletContextEvent(ServletContext paramServletContext);

  public ServletContext getServletContext();
}
Run Code Online (Sandbox Code Playgroud)

但是,javax:javaee-api-7.0 中的同一个类就是这个。

package javax.servlet;

import java.util.EventObject;

public class ServletContextEvent extends EventObject
{
  private static final long serialVersionUID = -7501701636134222423L;

  public ServletContextEvent(ServletContext source)
  {
    super(source);
  }

  public ServletContext getServletContext()
  {
    return (ServletContext)super.getSource();
  }
}
Run Code Online (Sandbox Code Playgroud)

同一包中的 ServletException 也会发生这种情况(可能还有更多,因为我没有逐一介绍)。

假设 Java Decompiler 给了我源代码的样子,从纯 Java 语法的角度来看,我无法理解为什么 6.0 类不是抽象的(或者不是接口)。

问题 1. 为什么 6.0 中的类不是抽象类或接口?

问题 2. 为什么在 7.0 中更改了实现?大家有没有意识到用javaee-api编译代码时6.0版本会出问题?

我问的原因是因为在 Intellij IDEA …

java java-ee-6 java-ee-7 jakarta-ee

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

Java EE 7:找不到“ http://java.sun.com/jsp/jstl/core”的标记库描述符

我试图在我的JSP页面中使用以下标记库:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Run Code Online (Sandbox Code Playgroud)

但是Eclipse向我显示了此错误:

Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"
Run Code Online (Sandbox Code Playgroud)

我已经使用此依赖项在我的类路径中有了JSTL:

<dependency>
  <artifactId>javaee-api</artifactId>
  <version>7.0</version>
  <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我使用WildFly 9。

我对这两个其他taglib有相同的问题:

<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>
Run Code Online (Sandbox Code Playgroud)

备注:以下链接给出了404 HTTP错误:http : //central.maven.org/maven2/javax/servlet/jsp/jstl/jstl/1.2/jstl-1.2.jar

谢谢。

eclipse jsp taglib java-ee-7

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

JavaEE - InvalidClassException

我正在编写一个 JavaEE 应用程序,但遇到以下问题:如果我在其中一个类 (TraceMessage) 中初始化任何新变量并启动应用程序,则会收到以下错误:

java.io.InvalidClassException: com.nsn.extmon.util.TraceMessage; local class incompatible: stream classdesc serialVersionUID = -5424907704652912574, local class serialVersionUID = -5748024201087063218
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:612)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1630)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1521)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1779)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
at java.util.ArrayList.readObject(ArrayList.java:771)
at sun.reflect.GeneratedMethodAccessor355.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1058)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1907)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1806)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
at com.nsn.extmon.databaseHandling.ResultDataHandler.getTraceMessages(ResultDataHandler.java:137)
at com.nsn.extmon.util.TraceResultBean.traceRead(TraceResultBean.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
at org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:96)
at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:72)
at javax.faces.component.UICommand.broadcast(UICommand.java:120)
at org.richfaces.component.RowKeyContextEventWrapper.broadcast(RowKeyContextEventWrapper.java:104)
at org.richfaces.component.UIDataAdaptor.broadcast(UIDataAdaptor.java:452)
at javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1013) …
Run Code Online (Sandbox Code Playgroud)

java exception class java-ee-7 jakarta-ee

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

JSON:JsonString的对象 - JsonString到X.class对象

我有一个被调用的类MediaList,我想用JSON-String和向后解析这个类的值.

public class KeywordList {
       private List<Keyword> keywords = new ArrayList<>();
}
Run Code Online (Sandbox Code Playgroud)

这里是JSON-String:

{
    "keywords": [
        {
            "id": 12,
            "name": "Thesis",
            "mediaCount": 31
        }, ...
    ]
}
Run Code Online (Sandbox Code Playgroud)

我正在使用谷歌lib gson,但我只是想使用标准的java版本与jax-rs,因为我不希望第三方工具在我的项目中.

java json jax-rs java-ee-7

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

payara 启动时未调用 @startup 和 @postConstruct

我正在开发一个 JEE 应用程序,我想在应用程序启动时进行一些迁移。实际上,我正在使用payara-microDocker 作为服务器。由于未知原因,该代码从未被执行。

这是我的代码:

@Singleton
@Startup
public class FlywayMigration {


    @PostConstruct
    public void startMigration(){
      System.out.println("Starting flyway migration");
    }
} 
Run Code Online (Sandbox Code Playgroud)

我在我的 pom 中添加了 javaee-api 作为依赖项:

    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

这是我的 Dockerfile 的内容:

FROM payara/micro

COPY ./target/mywebapp.war $DEPLOY_DIR
Run Code Online (Sandbox Code Playgroud)

构建并运行 docker 镜像后,应用程序的日志显示该应用程序启动良好:

Payara Micro URLs
http://5b258e6a441a:8080/mywebapp

'mywebapp' REST Endpoints
 GET    /mywebapp/api/hello
 GET    /mywebapp/api/myresource
Run Code Online (Sandbox Code Playgroud)

谁能帮我找到解决方案?

java maven java-ee-7 payara-micro

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

无法取消@Asynchronous调用EJB

在这个最简单的例子中,我做错了什么?(Glassfish 4.0-b87 + Eclipse Kepler m6)

Myself.java

package com.example.cancelbug;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.inject.Inject;

@Singleton
@Startup
public class Myself {
  @Inject Other other;
  private Future < Integer > future;

  @PostConstruct
  public void post_construct () {
    System.out.println("post_construct started");
    future = other.ton_of_work();
    System.out.println("post_construct ended");
  }

  @PreDestroy
  public void pre_destroy () {
    System.out.println("pre_destroy started");
    System.out.println("cancel result: " + Boolean.toString(future.cancel(true)));
    try {
      System.out.println("future result: " + future.get().toString());
    } catch (InterruptedException | ExecutionException e) {
      System.out.println("future …
Run Code Online (Sandbox Code Playgroud)

ejb glassfish java-ee java-ee-6 java-ee-7

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

Java中的Hashtable"Unresolved compilation"

这是我的班级

package main;

import java.util.Hashtable;

public class Information {

    private final static String name = "Info Name";
    private final static String direccion = "direction street number";

    Hashtable<String,String> coordenates = new Hashtable<String,String>();
    coordenates.put("lat", "36.564565465");
    coordenates.put("lng", "64.584616511");

}
Run Code Online (Sandbox Code Playgroud)

我从oracle文档中学到了很多东西

This example creates a hashtable of numbers. It uses the names of the numbers as keys:

   Hashtable<String, Integer> numbers
     = new Hashtable<String, Integer>();
   numbers.put("one", 1);
   numbers.put("two", 2);
   numbers.put("three", 3);
To retrieve a number, use the following code:

   Integer n = numbers.get("two"); …
Run Code Online (Sandbox Code Playgroud)

java java-ee java-ee-7

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

如何确保hashcode()在Java中不能解析为相同的值?

我有一个类的哈希码实现,哈希码实现与eclipse生成的一致,也是这里讨论的最常被接受的实践

这是我的哈希码实现(此方法中使用的所有ID都构成了对象的键):

public int hashCode() {
    final int prime = 31;
    int hashCode = 1;
    if(uId != null){
        hashCode = prime * hashCode + uId.hashCode();
    }
    if(rId != null){
        hashCode = prime * hashCode + rId.hashCode();
    }
    if(bId != null){
        hashCode = prime * hashCode + bId.hashCode();
    }
    if(reId != null){
        hashCode = prime * hashCode + reId.hashCode();
    }
    if(cId != null){
        hashCode = prime * hashCode + cId.hashCode();
    }
    return hashCode;
}
Run Code Online (Sandbox Code Playgroud)

我遇到了一个使用非常大的数据集进行测试的场景,而且我的集合没有这个类的预期数量的对象.仔细观察下面两个数据集导致相同的哈希码:50268236873,因此一条记录被添加到集合中的最后一个替换,因为它们的哈希码是相同的.

  Existing record :
  Record@2c0781cd[uId=54046,rId=10967,bId=177,reId=1728,cId=50194] …
Run Code Online (Sandbox Code Playgroud)

java hash-code-uniqueness hashcode java-ee java-ee-7

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

我们是否应始终使用异步JAX-RS资源用于移动后端?

我正在使用Java EE - JAX-RS 2.0技术构建Mobile后端API.

由于大多数移动客户端消耗都是异步http调用

所以我的问题是: 我应该为所有JAX-RS资源使用异步功能吗?原因如果不是?

以下是模板Mobile Async API

@Path("/async_api")
public class AsyncResource {

    @GET
    @Path("/loadUsers")
    @Produces(MediaType.APPLICATION_JSON)
    public void loadUsers(@Suspended AsyncResponse asyncResponse) {

        //TODO: ManagedExecutorService

        new Thread(new Runnable() {

            @Override
            public void run() {
                List users = loadBigUsers();
                asyncResponse.resume(users);
            }

            private List loadBigUsers() {
                return null; // Return big list
            }

        }).start();
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

java asynchronous jax-rs java-ee-7

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