Eclipse+Weblogic 12开发简单的Enterprise Application
学到EJB方面的内容,遇到了很多问题,翻阅了无数遍Java EE和Weblogic的官方文档,在google上进行了无数次搜索都没有答案,可能我要找的答案太冷门。这一切都起源于Java EE官方文档里的“cart”例子,我被他迷惑了整整一天。因为这个项目在Netbeans+GlassFish环境下可以运行的很好,直接右击项目,点运行就可以了。结果拿到Eclipse来,碰到了一堆问题,不是注入的EJB变量为Null要不就是找不到类。经过一天的摸索,现在终于有点头绪了,现在整理出来,希望可以帮助大家。而大家可能有更好的方法或者对我的叙述有疑问和意见,请大胆评论。
一、应用环境
本文假设您已经有了Eclipse或Spring Source Tool和Weblogic的配置经验。本项目是用Application Client project来访问EJB模块,比直接用Java EE容器管理的Web项目要复杂,因为web client与EJB模块在同一容器,可以很方便的使用Dependency Injection(依赖注入)。而Application Client是运行在单独的Application Client Container之中,它需要与Java EE容器交互,获取容器里的资源,就需要一些额外的设置。
所用工具:Spring Source Tool(本质上还是Eclipse,通用),weblogic command tool.
二、创建项目
1、新建一个Enterprise Application Project。
右击Package Explorer空白处,选择New->Other.
然后在Java EE下面选择Enterprise Application Client
点Next,填写项目基本信息,在这里我新建了一个hello项目,运行环境就选择weblogic。
在这个界面勾选Generate application.xml deployment descriptor,然后点击New Module来创建EJB和Client。
取消Web module,这里我们不创建Web Client和Connector。为Application client和EJB模块命名,之后点finish。
Eclipse就为我们生成了如下三个项目,helloClient-应用程序客户端,helloEJB-EJB模块,还有一个hello是负责把这两个模块打包成EAR部署到Weblogic。
2、编写EJB模块代码
EJB模块的代码结构如下:
其中hello.ejb.interfaces包下的Hello.java是一个远程业务接口,即运行在不同Java虚拟机里的client也可以访问它提供的服务,代码如下:
-
package hello.ejb.interfaces;
-
-
import javax.ejb.Remote;
-
-
-
public interface Hello {
-
-
public String sayHello(String name);
-
-
}
HelloBean是一个stateless session bean。当然stateful也可以,毕竟就这一个Application Client,它的代码如下:
-
package hello.ejb;
-
-
import javax.ejb.Stateless;
-
-
import hello.ejb.interfaces.Hello;
-
-
-
public class HelloBean implements Hello {
-
-
-
public String sayHello(String name) {
-
return "Hello: " + name;
-
}
-
-
}
3、设置Application Client
右击helloClient,选择properties。
打开Deployment Aseembly菜单,选择Manifest Entries,点Add...,把helloEJB.jar添加进去,添加此包是为了编译时不出错。点Finish。
helloClient的结构如图:
先看HelloTest.java的代码(我把默认生成的Main类删除了):
-
package com.hello.client;
-
-
import javax.ejb.EJB;
-
-
import hello.ejb.interfaces.Hello;
-
-
public class HelloTest {
-
-
-
private static Hello hello;
-
-
/**
-
* @param args
-
*/
-
public static void main(String[] args) {
-
-
System.out.println(hello.sayHello("David"));
-
-
}
-
-
}
-
Manifest-Version: 1.0
-
Class-Path: helloEJB.jar
-
Main-Class: com.hello.client.HelloTest
点下一步,输入名字:weblogic-application-client.xml.
它的内容是:
-
-
<wls:weblogic-application-client xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-application-client"
-
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/javaee_5.xsd
-
http://xmlns.oracle.com/weblogic/weblogic-application-client
-
http://xmlns.oracle.com/weblogic/weblogic-application-client/1.3/weblogic-application-client.xsd">
-
-
<!-- 定义要引用的EJB模块的JNDI名字 -->
-
<wls:ejb-reference-description>
-
<!-- 要使用EJB的变量 -->
-
<wls:ejb-ref-name>com.hello.client.HelloTest/hello</wls:ejb-ref-name>
-
-
<!-- JNDI命名规则:java:global/[应用程序名]EJB模块名/Bean名 -->
-
<wls:jndi-name>java:global/hello/helloEJB/HelloBean</wls:jndi-name>
-
</wls:ejb-reference-description>
-
-
</wls:weblogic-application-client>
EJB模块的JNDI名称,java:global是用来查找remote业务服务接口的。可以从weblogic console里面找到应用程序名,EJB模块名和Bean名。
4、导出Application Client与EJB包
由于WebLogic的OEPE插件不能直接在Eclipse下运行Application Client,所以我们需要把它和它引用的EJB包导出来,在命令行运行。右击helloClient,
选择Export:
然后选择Java EE下的App Client Jar file
指定Jar包的名称和路径。
点Finish创建,同样的helloEJB,选择EJB下的EJB JAR file,过程与App client jar file一样,这两个jar包都要放在同一个路径下。
5、运行helloClient
把hello这个Enterprise Application部署到WebLogic下,helloEJB和helloClient也会自动部署:
然后先设置WebLogic的环境变量,进入WebLogic安装目录,路径如下(根据自己的安装路径):
里面有setWLSEnv.cmd文件,是用来临时设置环境变量的,在cmd中运行它:
出现Your enviroment has been set即设置成功。现在可以运行我们的helloClient了,在命令行进入你放置helloClient.jar和helloEJB.jar的文件夹,运行如下命令:
java weblogic.j2eeclient.Main helloClient.jar t3://localhost:7001,这个是weblogic的命令行工具,一般这样使就够了,最多后面还可以传递几个main方法里的参数。
出现Hello: David,调用成功。如果当时没有定义weblogic-application-client.xml的话,就会出现如下错误:
三、结束
通过这个项目,对weblogic发布Java
EE项目更加熟悉了,而且也了解了怎样使用WebLogic的t3协议访问它的实例,并且使helloClient中的EJB变量hello注入成功。做这个项目之前还有几个测试项目,折腾的时间更长,还熬夜查资料,做不出来就坚决不睡觉,现在终于可以松口气休息了。
相关文章
- Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目(Windows平台)
- Eclipse插件开发 获取Workspace下所有的项目
- JAVA Eclipse开发Android如何让屏幕保持为竖直或水平状态
- JAVA Eclipse开发Android程序如何自定义图标
- java:解决eclipse配置Tomcat时找不到server选项
- 使用Git下载Hadoop的到本地Eclipse开发环境
- Eclipse插件开发 swt ComboBoxCellEditor CCombo 下拉框高度
- 【IOS-COCOS2D-X 游戏开发之三】MAC下配置ANDROID NDK环境并搭建COCOS2D-X环境并ECLIPSE正常编译运行COCOS2DX自带TESTSDEMO项目!
- Eclipse SVN (Subclipse的更新日志)、版本集合(1.10.0起)、更新、安装方法!
- 使用Eclipse开发Jsp
- FindBugs入门简介(eclipse安装使用实例)
- What happened when we perform Maven Update Project in Eclipse
- inconsistent debug frame and source code -Eclipse调试器里看到的代码行数和实际源代码不一致该怎么办
- 离线安装Eclipse的Color theme plugin
- Atitit org.eclipse.jdt 的ast 架构 Eclipse JDT API spec
- Eclipse-eclipse导入新项目后,运行时找不到主类解决办法
- 如何在Eclipse配置Tomcat
- Linux环境安装Eclipse工具开发
- 使用Eclipse设定Android开发环境
- Eclipse构建Maven项目
- Eclipse Debug 配置
- 实现springboot项目实现热部署(eclipse)
- eclipse上的Java静态分析工具——待续
- eclipse启动提示he Eclipse executable launcher was unable to locate its companion shared library. 时怎么办