JAX-WS Web服务:从控制台应用程序切换到Web应用程序

时间:2013-12-02 13:14:26

标签: java eclipse soap web war

我在Eclipse的控制台应用程序中创建了以下三个类:

@WebService(endpointInterface = "uk.co.hello.Details")
public class DetailsImpl implements Details{
    public String getDetails() {

        return "Hello";
    }
}

@WebService
@SOAPBinding(style = Style.RPC)
public interface Details{

    @WebMethod String getDetails();
}

public class DetailsPublisher{

    public static void main(String[] args) {
       Endpoint endpoint = Endpoint.publish("http://localhost:9900/mytest", new DetailsImpl());
       System.out.println(endpoint.isPublished());
    }
}

一切都很好,我可以发布我的网络服务并使用它。

现在我创建了一个Web应用程序,我想在JBoss上部署我的东西。可能我不再需要主方法,而是需要其他方法。有人能举例说明我需要改变什么才能产生一场有效的战争吗?

2 个答案:

答案 0 :(得分:0)

您可以将EJB发布为SOAP服务,但我从未听说过任何人在战争中在网络层发布SOAP服务。

为了使它适用于支持EJB 3.0的JBoss: a)指定EJB接口。

import java.rmi.Remote;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

@WebService
@SOAPBinding(style = Style.RPC)
public interface SOAPService extends Remote {
        String service();
}

b)指定EJB:

import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.jws.WebService;

@Stateless
@WebService(endpointInterface = "full.package.and.name.of.SOAPService")
@Remote(SOAPService.class)
public class EchoBean {
        public String service() {
                return "SOAP Serviced";
        }
}

c)将JBoss部署为EJB jar。

d)测试

答案 1 :(得分:0)

如果你知道spring,你可以使用cxf框架,可以使用eclipse找到一个好的教程 here。您可以使用自下而上的方法