EJB2.1可以将无状态会话Bean暴露为WebService
1.定义WebService服务接口(Endpoint Inteface),通过标注@WebService来指明这是一个WebService的服务接口,通过标注@WebMethod来指明要暴露的服务方法,@WebMethod是可选的,如果没有指明@WebMethod,则所有方法暴露为WebService服务方法。
package examples.ws;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public interface HelloWorld {
@WebMethod
public String hello();
}
2.实现一个无状态的会话Bean,实现服务接口。通过标注@WebService指明该无状态的会话Bean暴露为WebService,@WebService的属性endpointInterface指明WebService服务接口。
package examples.ws;
import javax.ejb.Stateless;
import javax.jws.WebService;
@WebService(endpointInterface="examples.ws.HelloWorld",serviceName="Greeter",portName="GreeterPort")
@Stateless
public class HelloBean implements HelloWorld {
public String hello() {
return "Hello World";
}
}
3.将上述EJB发布到EJB容器中。EJB容器会生成相应得WSDL文件和WebService.xml,也可以自己提供WSDL文件和WebService.xml,放在EJB-jar的META-INF文件夹下。生成得wsdl文件片段如下:
<service name="Greeter">
<port name="GreeterPort" binding="tns:GreeterPortBinding">
<soap:address location="http://[host]:8080/Greeter/HelloBean" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"/>
</port>
</service>
4.客户端代码:
import examples.ws.HelloWorld;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
public class WebServiceClient {
static String host = "localhost";
static String portType = "HelloBean";
static String serviceName = "Greeter";
static String serviceEndpointAddress = "http://" + host + ":8080/" + serviceName;
static String nameSpace = "http://ws.examples/";
public static void main(String[] args) throws Exception
{
URL wsdlLocation = new URL(serviceEndpointAddress + "/" + portType + "?WSDL");
QName serviceNameQ = new QName(nameSpace, serviceName);
Service service = Service.create(wsdlLocation, serviceNameQ);
HelloWorld client = (HelloWorld)service.getPort(HelloWorld.class);
System.out.println(client.hello());
}
分享到:
相关推荐
在【ejb WebService】中,我们可以创建一个EJB服务端,然后使用WebServices来暴露这个服务。这样,任何支持WebService的客户端(无论使用何种编程语言)都可以通过SOAP请求调用EJB的方法。这种集成使得EJB的功能可以...
EJB_WebService教师用书源码是一套完整的教学资源,旨在帮助教师和学生深入理解这两种技术,并通过实际操作来学习如何将它们整合到一起。源码中可能包含了多个示例项目,每个项目都演示了EJB和Web服务在实际应用场景...
1. **JAX-WS(Java API for XML Web Services)**:EJB 3.0支持JAX-WS,允许直接在Bean上使用`@WebService`注解,将Bean暴露为Web服务。服务端点接口(SEI)可以通过注解自动生成。 2. **SOAP与RESTful风格**:EJB ...
【描述】"一个webservice整合EJB的小例子"意味着这个压缩包包含了一个实际的、可运行的项目,展示了如何在 Axis2 上构建Web服务,并与EJB系统交互。通过这个小例子,我们可以学习到如何创建、部署和调用EJB服务,并...
在提供的压缩包文件中,我们看到Spring4.rar、Ajax2.rar、WebService.rar、Ajax1.rar和xml.rar,这些分别对应了Spring框架、Ajax技术和Web Service相关的资源。学习和掌握这些内容,将使你具备构建高效、现代化J2EE...
EJB的注解如`@WebService`、`@WebServiceClient`、`@Path`等用于标注Web服务相关的方法和类。 3. **部署**:将EJB和Web服务打包到一个Java EE应用中,通常是一个WAR或EAR文件。EJB容器如Glassfish、WildFly或TomEE...
3. **WebService支持**:EJB3还支持与WebService的集成,可以通过`@WebService`注解将EJB3组件暴露为Web服务,实现跨平台的远程调用。此外,JAX-WS(Java API for XML Web Services)为创建、部署和消费Web服务提供...
Axis不仅限于简单的数据交换,还可以与其他技术结合,如JMS(Java消息服务)或EJB(企业级JavaBean),构建更复杂的分布式系统。 总结:了解和掌握WebService Axis,对于Java开发者来说至关重要,因为它能帮助你在...
`@WebService`注解还可以将会话bean直接暴露为Web服务。 4. **消息驱动bean**:EJB3.0通过`@MessageDriven`注解实现了对JMS(Java Message Service)的支持,使得bean可以作为消息消费者,处理异步通信。 5. **...
EJB3.0允许直接将EJB作为Web服务暴露,方便与其他系统交互。`@WebService`和`@WebMethod`注解可用于将Bean的方法转换为Web服务接口。此外,JAX-WS(Java API for XML Web Services)提供了完整的工具链,简化了服务...
WebService是一个应用程序,它向外部暴露一个可以通过Web调用的API。WebService依赖以下几种技术: - **WSDL(Web Services Description Language)**:使用XML来描述WebService的所有方法、参数和服务的位置。 - **...
在EJB 3.0中,Web服务被集成到了EJB组件中,使得EJB可以直接暴露为Web服务。通过使用JAX-WS(Java API for XML Web Services),开发者可以方便地创建符合SOAP(Simple Object Access Protocol)标准的Web服务。 ##...
- `@WebService`:将Bean暴露为Web服务。 ### 容器管理的事务(CMT) EJB3.0中的事务管理由容器自动处理,开发者无需编写复杂的事务代码。例如,通过设置Bean的方法上`@TransactionAttribute`注解,可以指定事务...
- `@WebService` 将EJB暴露为Web服务。 ### 4. JPA(Java Persistence API) JPA是EJB 3.0的一部分,用于处理对象-关系映射(ORM)。它提供了API和元数据来定义实体类、映射关系和查询语言(JPQL)。 ### 5. 容器...
- `@WebService`,将Bean暴露为Web服务。 - `@PersistenceContext`,注入EntityManager来操作数据。 - `@TransactionAttribute`,定义事务属性。 ### 3. 持久化框架JPA(Java Persistence API) EJB3引入了JPA,它...
EJB3.0可以通过`@WebService`注解轻松地将Bean暴露为Web服务,简化了服务的创建和部署。 9. **异步方法调用** EJB3.0引入了异步方法调用,通过`@Asynchronous`注解,可以在后台线程执行耗时操作,提高系统响应...