java - Websphere 7 上的 EJB @Stateless 和 @WebService

标签 java jax-ws ejb-3.0 websphere-7

我四处寻找,试图找出如何将无状态 session bean 转变为 JAX-WS 网络服务(我使用的是 WAS 7、Websphere Integration Developer、EJB 3)。不是 Jax-RPC。我正式厌倦了摆弄 WID 附带的向导。出于某种原因,它根本不会让我这样做......我已经尝试从 Java bean 创建一个 JAX-WS webservice,换句话说,我创建了一个 Java 类并在那个东西上运行向导,它创建了一个全新的项目...

是否有某个地方的教程可以告诉我创建此 Web 服务所需的知识,而无需使用向导?

最佳答案

从 Java EE 5 教程尝试 A Web Service Example: helloservice - The Java EE 5 Tutorial .

其他:


例子

我写了一个小示例应用程序。

项目结构

`-- HelloEAR
|   |-- .project
|   `-- .settings
|       |-- org.eclipse.wst.common.component
|       |-- org.eclipse.wst.common.project.facet.core.xml
`-- HelloEJB
|   `-- .apt_generated
|   |   `-- org
|   |       `-- paulvargas
|   |           `-- ejb
|   |               `-- jaxws
|   |                   |-- SayHello.java
|   |                   |-- SayHelloResponse.java
|   |-- .classpath
|   |-- .factorypath
|   |-- .project
|   `-- .settings
|   |   |-- org.eclipse.jdt.apt.core.prefs
|   |   |-- org.eclipse.jdt.core.prefs
|   |   |-- org.eclipse.wst.common.component
|   |   |-- org.eclipse.wst.common.project.facet.core.xml
|   `-- ejbModule
|   |   `-- META-INF
|   |   |   |-- ibm-webservices-bnd.xmi
|   |   `-- org
|   |   |   `-- paulvargas
|   |   |       `-- ejb
|   |   |           |-- HelloBean.class
|   |   |           |-- HelloBean.java
|   |   |           |-- HelloLocal.class
|   |   |           |-- HelloLocal.java
|   |   |           |-- HelloRemote.class
|   |   |           |-- HelloRemote.java
|   |   |           `-- jaxws
|   |   |               |-- SayHello.class
|   |   |               |-- SayHelloResponse.class
`-- HelloWeb
|   `-- .apt_generated
|   |-- .classpath
|   |-- .factorypath
|   |-- .project
|   `-- .settings
|   |   |-- .jsdtscope
|   |   |-- org.eclipse.jdt.apt.core.prefs
|   |   |-- org.eclipse.jdt.core.prefs
|   |   |-- org.eclipse.wst.common.component
|   |   |-- org.eclipse.wst.common.project.facet.core.xml
|   |   |-- org.eclipse.wst.jsdt.ui.superType.container
|   |   |-- org.eclipse.wst.jsdt.ui.superType.name
|   `-- src
|   `-- WebContent
|   |   `-- WEB-INF
|   |       `-- classes
|   |       `-- lib
|   |       |-- web.xml

enter image description here

HelloBean.java

package org.paulvargas.ejb;

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

@Stateless
@WebService
public class HelloBean implements HelloRemote, HelloLocal {
    public String sayHello(String name) {
        return "Hello, " + name + ".";
    }
}

HelloRemote.java

package org.paulvargas.ejb;

import javax.ejb.Remote;

@Remote
public interface HelloRemote {
    String sayHello(String name);
}

HelloLocal.java

package org.paulvargas.ejb;

import javax.ejb.Local;

@Local
public interface HelloLocal {
    String sayHello(String name);
}

ibm-webservices-bnd.xmi

<?xml version="1.0" encoding="UTF-8"?>
<com.ibm.etools.webservice.wsbnd:WSBinding
    xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
    xmlns:com.ibm.etools.webservice.wsbnd="http://www.ibm.com/websphere/appserver/schemas/5.0.2/wsbnd.xmi">
    <routerModules transport="http" name="HelloWeb.war" />
</com.ibm.etools.webservice.wsbnd:WSBinding>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <display-name>HelloWeb</display-name>
    <servlet>
        <servlet-name>org.paulvargas.ejb.HelloBean</servlet-name>
        <servlet-class>com.ibm.ws.websvcs.transport.http.WASAxis2Servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>org.paulvargas.ejb.HelloBean</servlet-name>
        <url-pattern>/HelloBeanService</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
</web-app>

文件 SayHello.javaSayHelloResponse.java 由 IDE 自动生成。 在http://localhost:9080/HelloWeb/HelloBeanService/HelloBeanService.wsdl

可以看到部署的WSDL文件

关于java - Websphere 7 上的 EJB @Stateless 和 @WebService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15906226/

相关文章:

java - 格式错误的 Java Net URL

java - 如何使用 easymock Capture 进行测试

Java 类层次结构

java 。隐式 super 构造函数 Employee() 未定义。必须显式调用另一个构造函数

java - EJB Glassfish v3.1.2 客户端传递给 session bean 的数据始终为 null

java - 是否有任何 EJB 迁移工具可用于将 EJB 2.1 迁移到 EJB 3.x

java - 415 不支持的媒体类型 JAX-WS

java - 在 Java 中使用 Contract-First 的 Web 服务周期

soap - JAX-WS:尝试添加安全 header 时获取 DOMException - HIERARCHY_REQUEST_ERR

java - 如何将实体绑定(bind)到特定的持久性单元