首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GlassFish异常

GlassFish异常
EN

Stack Overflow用户
提问于 2013-02-08 20:55:54
回答 1查看 1.3K关注 0票数 0

我对所有这些东西都是新手。我尝试通过GlassFish启动via服务。当我尝试构建这个项目时,我得到了一个错误。

代码语言:javascript
复制
ant -f /home/philipp/NetBeansProjects/sks3 -DforceRedeploy=false -Ddirectory.deployment.supported=true -Dnb.wait.for.caches=true run
init:
deps-module-jar:
deps-ear-jar:
deps-jar:
check-rest-config-props:
generate-rest-config:
library-inclusion-in-archive:
library-inclusion-in-manifest:
compile:
compile-jsps:
In-place deployment at /home/philipp/NetBeansProjects/sks3/build/web
Initializing...
deploy?DEFAULT=/home/philipp/NetBeansProjects/sks3/build/web&name=sks3&contextroot=/sks3&force=true failed on GlassFish Server 3.1.2 
 Error occurred during deployment: Exception while deploying the app [sks3] : Invalid TYPE-level @EJB with name() = [] and beanInterface = [class java.lang.Object] in class Webservice.MeasurementResources.  Each TYPE-level @EJB must specify both name() and beanInterface().at org.glassfish.apf.AnnotationInfo@3b63118a. Please see server.log for more details.
/home/philipp/NetBeansProjects/sks3/nbproject/build-impl.xml:1028: The module has not been deployed.
See the server log for details.
BUILD FAILED (total time: 6 seconds)

我不知道出了什么问题,但根据消息,它必须在文件MeasurementResurces.java中…

代码语言:javascript
复制
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Webservice;

import Exception.DALException;
import dal.MeasurementDao;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.inject.Named;
import javax.ws.rs.Path;
import repo.Measurement;

/**
 *
 * @author philipp
 */
//@Stateless
//@inject
@EJB
//@LocalBean
@Named
@Path("Measurement")
public class MeasurementResources {
    @Inject
    MeasurementDao mDao;
    public void add(Measurement arg) throws DALException{
        mDao.save(arg);
    }
 /*   public void getAll(Measurement arg) throws DALException{
        mDao.getAll();
    }
    */
}

至少有人知道问题出在哪里了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-09 05:59:13

您正在使用没有声明namebeanInterface的类型级EJB。

代码语言:javascript
复制
/**
 *
 * @author philipp
 */
//@Stateless
//@inject
@EJB(name="MyEjb", beanInterface=RemoteEjb.class)
//@LocalBean
@Named
@Path("Measurement")
public class MeasurementResources {
    @Inject
    MeasurementDao mDao;
    public void add(Measurement arg) throws DALException{
        mDao.save(arg);
    }
}

@Remote
public interface RemoteEjb {
    public void doSomething();
}

@Stateless
public class MyEjb implements RemoteEjb {
   ...
}

EJB是您试图注入的name的名称。beanInterface是本地或远程接口。这不是真正的注射。这是一种使用注释替换部署描述符ejb-ref元素的方法。您应该使用JNDI查找来注入ejb。

我不知道您想做什么,但注入ejb的常用方法如下:

代码语言:javascript
复制
@Named
@Path("Measurement")
public class MeasurementResources {
    @EJB
    private MyEjb myejb;

    @Inject
    MeasurementDao mDao;
    public void add(Measurement arg) throws DALException{
        mDao.save(arg);
    }

    ...
 }       
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14773079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档