我加进了weblogic.ejb.deploy = C:/weblogic/myserver/HelloWorldBean.jar,重新启动weblogic5.1后,在客户端浏览却出现如下信息,不知怎么解决?/hello.jsp(1): Could not create a bean of type: helloworld.HelloWorldBean: java.lang.ClassNotFoundException: helloworld.HelloWorldBean probably occurred due to an error in /hello.jsp line 1: <jsp:useBean id="hello" class="helloworld.HelloWorldBean" scope="session" ></jsp:useBean>
ok!weblogic.log报告布署成功,我写了一个检测的程序mytest.jsp如下: <jsp:useBean id="test class="test.MyTestBean" scope="session" ></jsp:useBean> <%//out.println(test.getUserName()); out.println("<br>成功!!!"); %> 但却出现这样的信息:(这回没有:"Could not create a bean of type",我正在分析原因...) Compilation of 'D:\weblogic\myserver\classfiles\jsp_servlet\_mytest.java' failed: -------------------------------------------------------------------------------- D:\weblogic\myserver\classfiles\jsp_servlet\_mytest.java:75: 'try' without 'catch' or 'finally'. (No more information available, probably caused by another error)D:\weblogic\myserver\classfiles\jsp_servlet\_mytest.java:80: Type expected. (No more information available, probably caused by another error)
sorry,我太大意了,上面的问题是用Bean的时修少了一个"(id="test),改正之后出现和以前一样的信息,我把操作方法列出来: 1>在setEnv.cmd加入 set CLASSPATH=%WL_HOME%\myserver;%WL_HOME%\myserver\ejb 我的MyTest.jar在d:\weblogic\myserver\ejb\MyTest.jar; 2>在startWebLogic.cmd同样加入 3>启动weblogic5.1 weblogic.log如下:(应该是发布成功了吧?) 星期三 二月 23 13:40:11 GMT+08:00 2000:<I> <EJB JAR deployment d:/weblogic/myserver/ejb/MyTest.jar> EJB home interface: 'ejb.MyTestHome' deployed bound to the JNDI name: 'ejb.MyTestHome' 星期三 二月 23 13:40:11 GMT+08:00 2000:<E> <EJB JAR deployment4>我写了一程序mytest.jsp如下: <jsp:useBean id="test" class="ejb.MyTestBean" scope="session" ></jsp:useBean> <%//out.println(test.getUserName());%>5>浏览,但却出现这样的信息,我该怎么办?又迷茫了... /mytest.jsp(5): Could not create a bean of type: ejb.MyTestBean: java.lang.ClassNotFoundException: ejb.MyTestBean and java.lang.ClassNotFoundException: ejb.MyTestBean probably occurred due to an error in /mytest.jsp line 1: <jsp:useBean id="test" class="ejb.MyTestBean" scope="session" ></jsp:useBean>
Error 500--Internal Server Error From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1: 10.5.1 500 Internal Server Error The server encountered an unexpected condition which prevented it from fulfilling the request.
probably occurred due to an error in /hello.jsp line 1:
<jsp:useBean id="hello" class="helloworld.HelloWorldBean" scope="session" ></jsp:useBean>
星期二 二月 22 09:53:54 GMT+08:00 2000:<I> <EJB> 2 EJB jar files loaded, contain
ing 2 EJBs
星期二 二月 22 09:53:54 GMT+08:00 2000:<I> <EJB> 2 deployed, 0 failed to deploy.
注意成不成功关键是你的jar文件生成的对不对
去看看setEnv中classpath的设定,也就是要让weblogic找到你的HelloWorldBean.class。
注意:这个class和编译成jar的source一定要统一。
1>setEnv.cmd里我设定了set CLASSPATH=%WL_HOME%\myserver\HelloWorld.jar不知对不对,为什么在weblogic.properties里加进去了jar文件还要在这里又要指定路径?,如果jar文件很多,岂不是很麻烦?
2>HelloWorld.jar是我用jbulider4+ias开发的,那里面的自动生成的xml文件要手工修改,完毕后我用winzip打包成HelloWorld.jar
1>setEnv.cmd里我设定了set CLASSPATH=%WL_HOME%\myserver\HelloWorld.jar不知对不对,为什么在weblogic.properties里加进去了jar文件还要在这里又要指定路径?,如果jar文件很多,岂不是很麻烦?
2>HelloWorld.jar是我用jbulider4+ias开发的,那里面的自动生成的xml文件要手工修改,完毕后我用winzip打包成HelloWorld.jar
个人感觉weblogic的配布工作(也就是deploy)仅仅是建立起了bean的实体和他的remoteinterface的关联,而具体的实体是要靠你设定的classpath去找,在weblogic启动的时候,把它导入进来。
jar不是用winzip打包的,应该是用jdk下面bin目录中的jar命令作的。
用jbuilder4+ias写HelloWorld.jar时,要改META-INF目录里(有ejb-jar.xml,weblogic-ejb-jar.xml,MANIFEST.MF)weblogic-ejb-jar.xml,MANIFEST.MF这两个文件,完毕后用jar打包,再用winzip查看,发现唯MANIFEST.MF文件的内容被莫名的改为仅下面两行:
Manifest-Version: 1.0
Created-By: 1.2.2 (Sun Microsystems Inc.)
真是太奇怪了??
那两个xml文件是肯定要的,你如果用jar打包都失败,weblogic是肯定不转的。
我现在有个项目要选定了weblogic5.1,并且再过一段时间就要开工了,万一不行,倒时候就暂时用jsp开发算了,非常非常感谢vampirelord的帮忙,我会记得的,能不能告诉我你的mail和姓名,以后还有很多向您学习!
对了,要澄清一点:ejb和jsp根本是两回事。
我看到了一个a.bat的文件,是不是关于setEnv.cmd的设置?具体的范例文件没有看到呀?
我可以做一个,不过要等一段时间。
<jsp:useBean id="test class="test.MyTestBean" scope="session" ></jsp:useBean>
<%//out.println(test.getUserName());
out.println("<br>成功!!!");
%>
但却出现这样的信息:(这回没有:"Could not create a bean of type",我正在分析原因...)
Compilation of 'D:\weblogic\myserver\classfiles\jsp_servlet\_mytest.java' failed:
--------------------------------------------------------------------------------
D:\weblogic\myserver\classfiles\jsp_servlet\_mytest.java:75: 'try' without 'catch' or 'finally'.
(No more information available, probably caused by another error)D:\weblogic\myserver\classfiles\jsp_servlet\_mytest.java:80: Type expected.
(No more information available, probably caused by another error)
你干脆把你的ejb中的函数简化到只出一些message。也就不用什么try,catch之类乐,先确定出问题的地点再说。
1>在setEnv.cmd加入
set CLASSPATH=%WL_HOME%\myserver;%WL_HOME%\myserver\ejb
我的MyTest.jar在d:\weblogic\myserver\ejb\MyTest.jar;
2>在startWebLogic.cmd同样加入
3>启动weblogic5.1
weblogic.log如下:(应该是发布成功了吧?)
星期三 二月 23 13:40:11 GMT+08:00 2000:<I> <EJB JAR deployment d:/weblogic/myserver/ejb/MyTest.jar> EJB home interface: 'ejb.MyTestHome' deployed bound to the JNDI name: 'ejb.MyTestHome'
星期三 二月 23 13:40:11 GMT+08:00 2000:<E> <EJB JAR deployment4>我写了一程序mytest.jsp如下:
<jsp:useBean id="test" class="ejb.MyTestBean" scope="session" ></jsp:useBean>
<%//out.println(test.getUserName());%>5>浏览,但却出现这样的信息,我该怎么办?又迷茫了...
/mytest.jsp(5): Could not create a bean of type: ejb.MyTestBean: java.lang.ClassNotFoundException: ejb.MyTestBean and java.lang.ClassNotFoundException: ejb.MyTestBean
probably occurred due to an error in /mytest.jsp line 1:
<jsp:useBean id="test" class="ejb.MyTestBean" scope="session" ></jsp:useBean>
ejb的调用,是通过lookup,找到home接口,通过home接口,create出remote接口,用户只操作remote接口,至于remote接口和ejb的主体如何关联,则是weblogic的事情。
程序:
<%@page import="java.sql.*,java.util.*,javax.naming.*,javax.ejb.*,java.rmi.RemoteException,java.rmi.Remote,ejb.*" session="true" contentType="text/html;charset=GB2312"%>
<%
Context ctx=new InitialContext();
ejb.MyTestHome testhome=(ejb.MyTestHome)ctx.lookup("ejb.MyTestHome");
ejb.MyTest hello=testhome.create();
out.println(hello.getUserName("zhb"));
out.println("<br>ok!");
hello.remove();
%>
你在bean中打一些log信息,会出在weblogic的运行界面上,有没有问题就一目了然了。
因为ejb没办法debug,所以log一定要多打,兄弟能帮的忙估计也就这么多,然后就看你的了。
Good luck!!
I have into the getUserName
userId is:zhb
海兄弟,你既然用Ias做应用服务器,为什么要配置在weblogic下的ejb??何况你有6.0怎么还用5.1啊,哎呀我说哪里去了,废话废话,别怪我~~~
<%@page import="java.sql.*,java.util.*,javax.naming.*,javax.ejb.*,java.rmi.RemoteException,java.rmi.Remote,ejb.*" session="true"
那个import ejb.* 是什么,我想是你把自己的ejb也编译放到你的classes里面吧,
就像调用普通的bean一样,把它也import进来用,既然如此为什么还需要配置ejb呢?
不过我也不知道client端是怎么样调用ejb的,weblogic有几个ejb的例子,都是首先帮ejb
定义了本地接口home,比如private AccountHome home;我想编译程序会说java.lang.ClassNotFoundException:AccountHome ,在客户端当然是没有AccountHome接口类的,可是创建ejb必须用到home接口的create(),我不知道该怎么做;(
一年前我连java是什么都不知道,就和ejb干上了,调整weblogic环境用了一个星期,第一个ejb的发布又用了一个星期,翻了n多稳当,全他妈英文,而我的英文又很烂.....
我实在不忍心看你受罪,不过话说回来,该看的稳当还是要看,java技术更新很快,练英文吧!!!
ejb要在client端复制home接口吗??
还是用context的lookup就行了。我从来就是把jsp理解成client的,webserver和apserver不要混起来。
定义了本地接口home,比如private AccountHome home;我想编译程序会说java.lang.ClassNotFoundException:AccountHome ,在客户端当然是没有AccountHome接口类的,可是创建ejb必须用到home接口的create(),我不知道该怎么做;(
比如:
//这里AccountHome接口类不会出错吗??AccountHome配置在weblogic里面呀
private AccountHome home;
Context ctx = getInitialContext();
Object home = ctx.lookup("beanManaged.AccountHome");
//下面返回了AccountHome接口了,所以必须先定义home
home = (AccountHome) PortableRemoteObject.narrow(home, AccountHome.class);
你说用context的lookup就行了,lookup返回的接口难道不要用接口类定义吗?
定义了本地接口home,比如private AccountHome home;我想编译程序会说java.lang.ClassNotFoundException:AccountHome ,在客户端当然是没有AccountHome接口类的,可是创建ejb必须用到home接口的create(),我不知道该怎么做;(
比如:weblogic的例子里面weblogic\examples\ejb\basic\beanManaged\Client.java
34行
//这里AccountHome接口类不会出错吗??AccountHome配置在weblogic里面呀
//client没有AccountHome类可以用啊
private AccountHome home;
Context ctx = getInitialContext();你说用context的lookup就行了,lookup返回的接口难道不要用接口类定义吗?
给ezhb发个mail问问吧。他的邮箱就在上边。
您的问题,见意看一看vampirelord在上面所说的"ejb的调用,是通过lookup,找到home接口,通过home接口,create出remote接口,用户只操作remote接口,至于remote接口和ejb的主体如何关联,则是weblogic的事情。"这句话,然后结合weblogic的实例去体会吧,我也是新手,这是我第一个从客户端调用Ejb的程序,所以具体我也真说不清楚,我是看了weblogic里的实例做出来的,源码就在上面。
你用了Ias是吗,我今天下载了一个,可是安装时候要求输入注册码,你有没有??
inprise
YYSTYHAB-ADDHAAAA-AAATAAAA-ADDHAAAA-08C2
Error 500--Internal Server Error
From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1:
10.5.1 500 Internal Server Error
The server encountered an unexpected condition which prevented it from fulfilling the request.
请教解决该问题的方法!
你试一下这个:http://localhost:7001/jsp/hello.jsp
TO ezhb(海) :我现在也要用weblogic 5.1做一个开发ejb的项目啊,能指导一下么?
qq上聊聊啊!4579751
谢谢你先了!