Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何让客户机识别EJB项目中包含的对象类?_Java_Jakarta Ee_Ejb - Fatal编程技术网

Java 如何让客户机识别EJB项目中包含的对象类?

Java 如何让客户机识别EJB项目中包含的对象类?,java,jakarta-ee,ejb,Java,Jakarta Ee,Ejb,我创建了一个带有EJB和远程接口的项目,如下所示。我还创建了一个类来保存这个项目中的对象(ShipData)。我将这个bean部署到服务器上。然后我在一个新的动态项目中创建了一个带有main方法的类,如下所示,在这里我注入了我创建的bean。问题似乎是ShipData类未被识别。有没有人能告诉我,他们是否能看到我所做的有什么根本性的错误。我还展示了服务器和客户端项目的文件结构。谢谢你的帮助 EJB 船舶数据 使用main方法和EJB注入在新项目中初始化 ShipData是一个模型/数据bean/

我创建了一个带有EJB和远程接口的项目,如下所示。我还创建了一个类来保存这个项目中的对象(ShipData)。我将这个bean部署到服务器上。然后我在一个新的动态项目中创建了一个带有main方法的类,如下所示,在这里我注入了我创建的bean。问题似乎是ShipData类未被识别。有没有人能告诉我,他们是否能看到我所做的有什么根本性的错误。我还展示了服务器和客户端项目的文件结构。谢谢你的帮助

EJB 船舶数据 使用main方法和EJB注入在新项目中初始化
ShipData是一个模型/数据bean/数据传输对象。将其移动到另一个项目(可以称为commonComponents或DataObjects)。现在从该项目中创建jar,并将其放置在客户机和服务器(EJB)项目的类路径中


在ypur当前设置中,ShipData对象将仅向服务器(EJB项目)公开。

如果我将ShipData类作为EJB中的嵌套类,ShipBean类,它会解决我的问题吗?我曾经尝试过这样做,但它仍然不起作用(但在我看来它应该起作用),所以我只是想知道你对这种方法有什么想法。将其作为嵌套对象将只向服务器公开ShipData。您可以为服务器和客户端(1)中使用的对象创建单独的项目,或者需要在服务器和客户端(2)中复制代码。选择1是最好的。
@Stateless
public class ShipBean implements ShipBeanRemote {

private ShipData newShip;
private List<ShipData> listOfShips;

public void addShip(String shipName,int tonnage,String nationality){
    newShip=new ShipData(shipName, tonnage, nationality);
    listOfShips.add(newShip);

}

public ShipData searchShip(String shipName){
    for(int i=0; i<listOfShips.size(); i++){
        if(listOfShips.get(i).getShipName() != null && listOfShips.get(i).getShipName().equals(shipName));
           newShip=listOfShips.get(i);
    }
    return newShip;
}
}
@Remote
public interface ShipBeanRemote {

public void addShip(String shipName,int tonnage,String nationality);


public ShipData searchShip(String shipName);

}
public class ShipData{

private String shipName;
private int tonnage;
private String nationality;

public ShipData(String shipName, int tonnage, String nationality) {
    this.shipName = shipName;
    this.tonnage = tonnage;
    this.nationality = nationality;
}

public String getShipName() {
    return shipName;
}

public void setShipName(String shipName) {
    this.shipName = shipName;
}

public int getTonnage() {
    return tonnage;
}

public void setTonnage(int tonnage) {
    this.tonnage = tonnage;
}

public String getNationality() {
    return nationality;
}

public void setNationality(String nationality) {
    this.nationality = nationality;
}

}
public class SearchShips {

@EJB (lookup="java:global/ShippingBeans/ShipBean") 
 private ShipBeanRemote ship; 
 /* calculator is the representative of the bean, created 
 at runtime using dependency injection */ 


public static void main (String[] args){

    printAnabellaInfo();
}

public void printAnabellaInfo(){
ship.addShip("shipA",10,"Irish");
ship.addShip("Anabella",15,"French");
ship.addShip("shipC",12,"English");


ship.searchShip("Anabella");
System.out.println(ship.getShipName);

}
}