发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA
1 2 下一页 Go 2

EJB在weblogic下的部署与运行问题

2003-07-06 15:03
赞助商链接

我尽量把这个问题说清楚,但我知道要把这个问题从头到尾看一遍很麻烦,但我还是恳请大家能耐下心看一下我到底问题出在哪里,帮帮我,谢谢大家!

环境变量设置:
classpath:c:\JBuilder6\jdk1.3.1\lib\tools.jar;c:\JBuilder6\jdk1.3.1\lib\dt.jar;c:\j2sdkee1.3.1\lib\j2ee.jar;c:\bea\wlserver6.1\lib\weblogic_sp.jar;c:\bea\wlserver6.1\lib\weblogic.jar;e:\javatest;

path:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;c:\JBuilder6\jdk1.3.1\bin;c:\j2sdkee1.3.1\bin;c:\bea\wlserver6.1\bin;

J2EE_HOME,JAVA_HOME,WL_HOME我也都设好了

1。我编写了一个EJB:3个java文件分别是――HelloWorld.java,HelloWorldHome.java,HelloWorldBean.java,
(其中package ejbweblogic.ejb;)
(我在环境变量的classpath中设了我存放包的路径:e:\javatest;)

2。3个java文件编译通过后,均存放在e:\javatest\ejbweblogic\ejb目录下

3。编写了ejb-jar.xml和weblogic-ejb-jar.xml文件,存放在e:\javatest\META-INF目录下
(weblogic-ejb-jar.xml中jndi-name为HelloWorldEJB)

4。使用jar命令将META-INF和ejbweblogic一起打成一个包
e:\javatest>jar cvf HelloWorld.jar ejbweblogic META-INF

5。我把HelloWorld.jar文件拷贝到c:\bea\wlserver6.1\config\mydomain\applications目录下

6。在weblogic控制台中将HelloWorld.jar upload进来

7。编写一个HelloWorldClient.java,存放在e:\javatest\ejbweblogic\ejb目录下;程序中lookup("HelloWorldEJB")

8。编译通过后我执行:
e:\javatest>java ejbweblogic.ejb.HelloWorldClient "t3://localhost:7001"
但执行后出现错误:Caught an unexcepton exception!(这是HelloWorldClient中主程序抛出的异常。)

请大家帮我看看我到底哪里做错了?谢谢!

附:HelloWorldClient程序
package ejbweblogic.ejb;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;

public class HelloWorldClient
{public static void main(String[] args)
{try{Context initial=new InitialContext();
Object objref=initial.lookup("HelloWorldEJB");
HelloWorldHome home=(HelloWorldHome)PortableRemoteObject.narrow(objref,HelloWorldHome.class);
HelloWorld helloBean=home.create();
String msg=helloBean.sayHello();
System.out.println(msg);}
catch(Exception ex)
{System.err.println("Caught an unexception exception!");
}
}
}

2003-07-07 09:55


System.err.println("Caught an unexception exception!");
之后,增加一行
ex.printStackTrace();

重新执行后,看错误信息,在来解决你的问题

2003-07-07 11:06

你有好几个地方都错了。

1、在你第4步之后,不能直接部署,需要用ejbc对jar包进行处理,生成EJB极其接口的weblogic的实现类以及一些Weblogic运行时读的配置文件。

jar cvf pre_HelloWorld.jar ejbweblogic META-INF
java weblogic.ejbc pre_HelloWorld.jar HelloWorld.jar

2、如果你的Weblogic在Development mode下,不需要在控制台upload,拷贝到applications目录下,已经自动部署好了。

3、客户端程序和EJB不在一个JVM里面运行,需要定位JNDI服务

定位JNDI方法很多,比较好的办法是在JNDI配置文件jndi.properties里面写上JNDI工厂和地址,自己创建一个jndi.properties文件,放在CLASSPATH路径下,内容如下:

java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
java.naming.provider.url=t3://fankai:7001/

2003-07-07 17:01

String url = "t3://localhost:7001";
String user = "system";
String password = "11111111";
Properties properties = null;

properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
properties.put(Context.PROVIDER_URL, url);
if (user != null) {
properties.put(Context.SECURITY_PRINCIPAL, user);
properties.put(Context.SECURITY_CREDENTIALS, password == null ? "" : password);
}
Context ic = new InitialContext(properties);

2003-07-07 17:09

我遵照ysxu和robbin的建议,将原先错误的地方改正了。但有一点我还不是很清楚,就是关于JNDI服务的定位问题。“客户端程序和EJB不在一个JVM里面运行”是什么意思?如何做到让他们在一个JVM中运行?我自己写jndi.properties,存放在e:\javatest下,那么在classpath中是否添加一个路径为:e:\javatest\jndi.properties

可能就是因为这个问题还没解决吧,我运行客户端程序后出现错误如下:
Caught an unexception exception!
javax.naming.CommunicationException: Can't find SerialContextProvider
at com.sun.enterprise.naming.SerialContext.getProvider(SerialContext.java:63)
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:120)
at javax.naming.InitialContext.lookup(InitialContext.java:350)
at ejbweblogic.ejb.HelloWorldClient.main(HelloWorldClient.java:10)

看了ysxu和robbin的回复,我虽然还是没能完全解决问题,但收获的确不小,可能正在向成功迈进了,在这里先谢谢两位。但是由于我刚接触java和EJB,而且本人比较愚笨,所以还有一些问题没有搞清楚,恳请两位和更多高人能再次指点一二,万分感谢!

2Go 1 2 下一页

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com