Java EJB作为企业应用项目中的WebService

Java EJB作为企业应用项目中的WebService,java,web-services,soap,glassfish,ejb,Java,Web Services,Soap,Glassfish,Ejb,我已经在Netbeans中创建了一个Maven企业应用程序项目。我创建了一个示例EJB、一个远程接口和一个本地接口。现在我想通过使用这些EJB发布一个SOAP Web服务,但有一点我做错了,因为在glassfish中,我无法查看端点(使用wsdl等)。但它被列为一个组件: 组件名称:推荐SoapService,SHITSTORMRECOMMENDER 模块名称:ShitstormRecommender-ejb-1.0.jar,ShitstormRecommender-ejb-1.0.jar 类型

我已经在Netbeans中创建了一个Maven企业应用程序项目。我创建了一个示例EJB、一个远程接口和一个本地接口。现在我想通过使用这些EJB发布一个SOAP Web服务,但有一点我做错了,因为在glassfish中,我无法查看端点(使用wsdl等)。但它被列为一个组件:

组件名称:推荐SoapService,SHITSTORMRECOMMENDER

模块名称:ShitstormRecommender-ejb-1.0.jar,ShitstormRecommender-ejb-1.0.jar

类型:无状态SessionBean,无状态SessionBean

我的EJB:

import com.sun.javafx.scene.control.skin.VirtualFlow;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import javax.ejb.LocalBean;
import org.andy.dto.Recommendation;
import org.andy.dto.RecommendationRequest;

    @Stateless(name = "SHITSTORMRECOMMENDER")
    public class ShitstormRecommenderEJB implements ShitstormReommenderEJBRemote,
            ShitstormRecommenderEJBLocal {

        @Override
        public List<Recommendation> getRecommendation(RecommendationRequest request) {
            Recommendation r1 = new Recommendation("Task 2", 10, "blubb");
            Recommendation r2 = new Recommendation("Task 1", 5, "bla");
            List<Recommendation> recommendations = new ArrayList<>();
            recommendations.add(r1);
            recommendations.add(r2);
            return recommendations;
        }

    }
import com.sun.javafx.scene.control.skin.VirtualFlow;
导入java.util.ArrayList;
导入java.util.List;
导入javax.ejb.Stateless;
导入javax.ejb.LocalBean;
导入org.andy.dto.Recommendation;
导入org.andy.dto.RecommendationRequest;
@无状态(name=“SHITSTORMRECOMMENDER”)
公共类ShitstormRecommenderEJB实现ShitstormRecommenderejbremote,
Shitstorm推荐本地{
@凌驾
公共列表GetRecommension(推荐请求){
建议r1=新建议(“任务2”,10,“blubb”);
建议r2=新建议(“任务1”,5,“bla”);
列表建议=新建ArrayList();
建议.增加(r1);
建议.增加(r2);
返回建议;
}
}
我的远程接口(本地接口看起来与@Local相同):

@Remote
公共接口shitstormromenderejbremote{
公共列表获取推荐(推荐请求请求);
}
我的WebService类(位于带有接口和ejb的ejb容器中):

package org.andy.service;
导入java.util.List;
导入javax.ejb.ejb;
导入javax.ejb.Stateless;
导入javax.jws.WebMethod;
导入javax.jws.WebParam;
导入javax.jws.WebResult;
导入javax.jws.WebService;
导入org.andy.dto.Recommendation;
导入org.andy.dto.RecommendationRequest;
导入org.andy.ejb.shitstormromenderejbremote;
@网络服务(
name=“ShitstormRecommender”,
portName=“ShitstormRecommenderPort”,
serviceName=“ShitstormRecommenderService”,
targetNamespace=”http://shitstormRecommendation.org"
)
@无国籍
公共类推荐服务{
@EJB
私人厕所推荐人;
@网络方法
公共字符串sayCiao(){
返回“ciao”;
}
@网络方法
@WebResult(name=“建议”)
公开名单建议(
@WebParam(name=“recommendationRequest”)recommendationRequest{
返回推荐人。GetRecommension(请求);
}
}
也许你可以说,我该怎么做才能让它发挥作用?我已经试过了。它似乎在那里工作,但我想我忘了什么


非常感谢你的帮助

您是否尝试通过:
http://localhost:8080/ShitstormRecommenderService/RecommendationSOAPService?wsdl
假设您的服务器在端口8080上运行是的,我已经尝试过了,但只得到HTTP 404 Not found错误。也许我必须在ejb-jar.xml中配置一些东西?
@Remote
public interface ShitstormReommenderEJBRemote {
    public List<Recommendation> getRecommendation(RecommendationRequest request);
}
package org.andy.service;

import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import org.andy.dto.Recommendation;
import org.andy.dto.RecommendationRequest;
import org.andy.ejb.ShitstormReommenderEJBRemote;

@WebService(
        name= "ShitstormRecommender",
        portName = "ShitstormRecommenderPort",
        serviceName = "ShitstormRecommenderService",
        targetNamespace = "http://shitstormRecommendation.org"
        )
@Stateless
public class RecommendationSOAPService{

    @EJB
    private ShitstormReommenderEJBRemote recommender;

    @WebMethod
    public String sayCiao(){
        return "ciao";
    }
    @WebMethod
    @WebResult(name="recommendations")
    public List<Recommendation> getRecommendation(
            @WebParam(name="recommendationRequest") RecommendationRequest request) {
        return recommender.getRecommendation(request);
    }
}