我是一个weblogic的初学者,这些天一直在想把有个ejb3放在weblogic上去调用,但遇到了很多问题,经过很多高手的指点后,终于成功的实现了,代码如下:
ejb3的代码
package com.ouruan.ejb3.interfaces;
import javax.ejb.Remote;
@Remote(value=HelloRemoteInterface.class)
public interface HelloRemoteInterface {
public String sayHello();
}
package com.ouruan.ejb3.interfaces;
import javax.ejb.Stateless;
@Stateless(mappedName="HelloRemoteSessionBean")
public class HelloRemoteSessionBean implements HelloRemoteInterface {
@Override
public String sayHello() {
return "无状态的会话bean,远程调用接口!";
}
}
这个Session Bean使用了@Stateless注释指定了该Session Bean是无状态的,需要设置mappedName属性指定该Session Bean的JNDI名
(Weblogic应用服务)客户端代码
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.ouruan.ejb3.interfaces.HelloRemoteInterface;
public class HelloRemoteTest {
public static void main(String[] args) {
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
props.put(Context.PROVIDER_URL, "t3://localhost:7001");
try {
InitialContext ctx = new InitialContext(props);
HelloRemoteInterface helloworld = (HelloRemoteInterface) ctx
.lookup("HelloRemoteSessionBean#com.ouruan.ejb3.interfaces.HelloRemoteInterface");
System.out.println(helloworld.sayHello());
} catch (NamingException e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
}
}
其中 Context.INITIAL_CONTEXT_FACTORY指:定到目录服务的连接工厂
Context.PROVIDER_URL指:目录服务提供者URL,
注:lookup方法里面的参数是从weblogic里面获取到的名字,如果用HelloRemoteSessionBean/remote会抛出异常:
javax.naming.NameNotFoundException: While trying to lookup 'HelloRemoteSessionBean.remote' didn't find subcontext 'HelloRemoteSessionBean'. Resolved '' [Root exception is javax.naming.NameNotFoundException: While trying to lookup 'HelloRemoteSessionBean.remote' didn't find subcontext 'HelloRemoteSessionBean'. Resolved '']; remaining name 'HelloRemoteSessionBean/remote'While trying to lookup 'HelloRemoteSessionBean.remote' didn't find subcontext 'HelloRemoteSessionBean'. Resolved ''
at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:234)
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:348)
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:259)
at weblogic.jndi.internal.ServerNamingNode_1032_WLStub.lookup(Unknown Source)
at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:405)
at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:393)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.ouruan.ejb3.test.HelloRemoteTest.main(HelloRemoteTest.java:20)
Caused by: javax.naming.NameNotFoundException: While trying to lookup 'HelloRemoteSessionBean.remote' didn't find subcontext 'HelloRemoteSessionBean'. Resolved ''
at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139)
at weblogic.jndi.internal.BasicNamingNode.lookupHere(BasicNamingNode.java:247)
at weblogic.jndi.internal.ServerNamingNode.lookupHere(ServerNamingNode.java:182)
at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:206)
at weblogic.jndi.internal.RootNamingNode_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:589)
at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:477)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:473)
at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
lookup方法的参数可以通过:http://localhost:7001/console/consolejndi.portal?_nfpb=true&_pageLabel=JNDIHomePage&server=AdminServer 这个路径找到我们部署在weblogic上面的ejb项目,点开我们自己的ejb项目找到我们的接口类将:概述-->绑定名copy下来作为lookup方法的参数就可以了!
注:同时还需要将导入weblogic.jar添加的到项目中去,如果没有这个jar包会抛出java.io.EOFException
再运行HelloRemoteTest就可以了
(Jboss应用服务器)客户端代码
public class HelloRemoteTest {
public static void main(String[] args) {
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "localhost:1099");
try {
InitialContext ctx = new InitialContext(props);
HelloRemoteInterface helloworld = (HelloRemoteInterface) ctx
.lookup("HelloRemoteSessionBean/remote");
System.out.println(helloworld.sayHello());
} catch (NamingException e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
}
}
分享到:
相关推荐
Weblogic 10.3.6 2019年7月16日集成补丁包(p29633432_1036_Generic_20190716.zip),补丁名称:MXLE,下载文件中包含补丁安装说明和方法(自用详细步骤)。服务器打补丁前请注意做好备份,若与旧的补丁冲突,需卸载...
Oracle WebLogic Server 10.3.0.0下载 包括两个文件: server103_linux32.bin server103_win32.exe
3. **兼容性提升**:更新可能包含对新版本的Java SE、操作系统或其他依赖组件的兼容性修复,以确保WebLogic Server能与最新的技术环境协同工作。 4. **功能增强**:有时补丁也会引入新的特性和功能,以满足不断变化...
Linux RedHat 安装 weblogic10.3.5.0 Linux RedHat 安装 weblogic10.3.5.0 是一种常见的企业级应用服务器安装配置,以下是安装过程中涉及的知识点: 1. Linux 用户管理:在安装 weblogic 之前,需要创建 weblogic ...
《Oracle WebLogic 10.3.1.0.0 集群配置手册》是针对Oracle公司的WebLogic Server的一款详细指南,旨在帮助用户理解和配置WebLogic Server的集群环境,以实现高可用性和负载均衡。Oracle WebLogic Server是一款强大...
4. **安装补丁**:遵循Oracle提供的指南,将补丁应用到WebLogic实例上。 5. **验证**:安装后,使用测试工具进行验证,确认补丁已成功安装并解决了漏洞。 6. **更新配置**:可能需要更新WebLogic的配置文件,以确保...
2021年10月发布的WebLogic 10.3.6.0.211019补丁集是针对这个版本的一次重要更新,旨在提升系统性能、增强安全性并修复已知问题。 补丁集更新(Patch Set Update, PSU)是Oracle针对其产品提供的常规维护更新,包含...
WebLogic Server 10.3.6.0 是 Oracle 公司提供的一个企业级 Java 应用服务器,它主要用于构建、部署和管理基于Java EE(Java Platform, Enterprise Edition)的应用程序。这个版本发布于2011年,是WebLogic Server ...
"WebLogic patch10.3.6.0.180116" 是针对WebLogic Server 10.3.6.0版本的一个重要安全更新,发布于2018年1月16日。这个补丁主要目的是修复该版本中发现的安全漏洞,以保护用户的系统免受潜在攻击。 WebLogic服务器...
公司需要,非得让安装个这么老版本的,全网找遍了找不到。没办法找客户要了一个。
详细介绍weblogic在Linux suse上的安装流程,图文并茂,文档结构清楚
这个版本支持Java EE 5和6标准,包括EJB 3.0/3.1、JSF 1.2/2.0、JPA 1.0/2.0等。它还引入了对OSGi模块化支持,提升了性能和可扩展性。 2. **补丁包的作用** 补丁包是软件更新的一种形式,通常用于修复已知的问题、...
Weblogic 10.3 性能优化参数配置 Weblogic 服务器是 Oracle 公司推出的一个基于 Java 的中间件服务器,广泛应用于企业级应用系统中。为了确保 Weblogic 服务器的高性能和稳定运行,需要对其进行合理的配置和优化。...
开发部署中间件weblogic...WebLogic Integration等企业用的中间件(但当下Oracle主要以Fusion Middleware融合中间件来取代这些WebLogic Server之外的企业包),以及OEPE(Oracle Enterprise Pack for Eclipse)开发工具。
在本文中,我们将深入探讨如何使用Eclipse IDE与WebLogic Server 10.x版本结合,开发基于EJB 3.0规范的应用程序。EJB(Enterprise JavaBeans)是Java EE平台的核心组件,用于构建可扩展、可靠且安全的企业级应用程序...
CVE-2020-14882 Oracle WebLogic Server 10.3.6.0.0 / 12.1.3.0.0
### 图解Eclipse+MyEclipse+WebLogic开发EJB #### 一、概述 本文旨在通过图文并茂的方式详细介绍如何使用Eclipse、MyEclipse 和 WebLogic 这三种工具来开发EJB(Enterprise JavaBeans)应用。EJB 是一种用于开发...
例如:bsu.sh -install -patch_download_dir=/home/weblogic/Oracle/Middleware/utils/bsu/cache_dir -patchlist=8K1U -prod_dir=/home/weblogic/Oracle/Middleware/wlserver_10.3 -verbose 注意:如果打过以前补丁...
WebLogic 10.3是Oracle公司发布的一款企业级应用服务器,它提供了强大的Java EE平台支持,能够帮助企业构建、部署和管理复杂的应用程序。本文将详细介绍WebLogic 10.3的安装过程,帮助读者更好地理解和掌握其安装...
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part1 其他部分详见我的上传列表,全部分卷下载完成才能解压。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun...