温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

J2EE web service开发中如何把ejb发布为web服务

发布时间:2022-01-11 16:31:49 来源:亿速云 阅读:128 作者:柒染 栏目:编程语言

小编今天带大家了解J2EE web service开发中如何把ejb发布为web服务,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“J2EE web service开发中如何把ejb发布为web服务”的知识吧。

把 ejb 作为 web 服务发布比 JSE 端点要复杂些 . 并且只有无状态会话 Bean 才能发布成 Web 服务 . 利用 ejb 的一大好处就是容器管理的事务 . 但是 spring 同样能做到这个 , 这一点不再具有很大的吸引力了 . 那么剩下的好处估计就只有用在必须用 ejb 的情况下又同时需要 web 服务这种情况了 . EJB 端点跟 JSE 端点跟一个不同点在于 : 不需要在 web.xml 文件中配置 servlet 映射 , 但是需要在 ejb-jar.xml 文件中配置 web 服务端点接口 . 另一个不同之处就是不需要一个实现 web 服务接口的具体类 . Jboss 4.04 版本下具体实现 .

建立一个无状态会话 bean

package ejb;    import javax.ejb.SessionBean;   import javax.ejb.SessionContext;   import javax.ejb.CreateException;   public class WebServiceBean implements SessionBean {       SessionContext sessionContext;       public void ejbCreate() throws CreateException {       }       public void ejbRemove() {       }       public void ejbActivate() {       }       public void ejbPassivate() {       }        public void setSessionContext(SessionContext sessionContext) {           this.sessionContext = sessionContext;       }        public void hello() {           System.out.println("hello");       }   }     package ejb;    import javax.ejb.EJBObject;   import java.rmi.RemoteException;    public interface WebService extends EJBObject {       public void hello() throws RemoteException;   }    package ejb;    import javax.ejb.EJBHome;   import javax.ejb.CreateException;   import java.rmi.RemoteException;    public interface WebServiceBeanHome extends EJBHome {     public WebService create() throws CreateException, RemoteException;   }

没有什么好多说的 .

定义一个 Web 服务接口

package ejb;    import java.rmi.*;   public interface WebServiceTest extends Remote {       public void hello() throws RemoteException;   }

生成 Web 服务所需的配置文件 :

< configuration xmlns="http://www.jboss.org/jbossws-tools"      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xsi:schemaLocation="http://www.jboss.org/jbossws-tools http://www.jboss.org/jbossws-tools/schema/jbossws-tool_1_0.xsd">     < java-wsdl>       < service name="WebServiceTest" style="rpc" endpoint="ejb.WebServiceTest"/>       < namespaces target-namespace="http://ejb" type-namespace="http://ejb"/>       < mapping file="jaxrpc-mapping.xml"/>       < webservices ejb-link="WebServiceBean"/>     < /java-wsdl>   < /configuration>

利用 Jboss 自带的工具生成 Web 服务所需要的布署文件 . wstools -cp  classes -config wstools-config.xml

把生成的布署文件放到 META-INF 文件夹而不是 JSE 端点的 web-INF 文件夹下 .

修改 ejb-jar.xml 文件加上ejb.WebServiceTest元素 , 注意顺序 .OK 打包发布 .

客户端调用程序

package ejb;    import java.net.URL;   import javax.xml.rpc.*;   import javax.xml.namespace.QName;   import javax.naming.*;   import javax.rmi.PortableRemoteObject;   import javax.naming.InitialContext;   import java.util.Hashtable;    public class ClientTest {        private WebServiceTest getPort() throws Exception {           ServiceFactory factory = ServiceFactory.newInstance();           URL wsdlURL = new URL("http://hechang:8080/ejb/TestService?wsdl");           QName qname = new QName("http://ejb", "WebServiceTest");           Service service = factory.createService(wsdlURL, qname);           WebServiceTest port = (WebServiceTest) service.getPort(WebServiceTest.class);           return port;       }        private WebService ejbTest() throws Exception {           Hashtable environment = new Hashtable();           environment.put(Context.INITIAL_CONTEXT_FACTORY,                           "org.jnp.interfaces.NamingContextFactory");           environment.put(Context.URL_PKG_PREFIXES,                           "org.jboss.naming:org.jnp.interfaces");           environment.put(Context.PROVIDER_URL, "jnp://localhost:1099");           Context context = new InitialContext(environment);           Object ref = context.lookup("WebServiceBean");           WebServiceBeanHome webServiceHome = (WebServiceBeanHome) PortableRemoteObject.                                           narrow(ref, WebServiceBeanHome.class);           WebService webService = webServiceHome.create();           return webService;       }        public static void main(String[] args) throws Exception {           ClientTest clienttest = new ClientTest();           WebServiceTest webService = clienttest.getPort();           webService.hello();           WebService webService2=clienttest.ejbTest();           webService2.hello();       }   }

感谢大家的阅读,以上就是“J2EE web service开发中如何把ejb发布为web服务”的全部内容了,学会的朋友赶紧操作起来吧。相信亿速云小编一定会给大家带来更优质的文章。谢谢大家对亿速云网站的支持!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI