Mulitple databases handling in Session EJB
Can u get connections to two different database in one method of Session EJB.
I want to update two different databases probably one in Oracle and other in SQL server.
Any suggestions ??
Thanks.
Writing two entity beans might not work.
here is the reason why.
If you start a transaction in your session bean and try to call 2 entity beans in the same transaction, then your entity beans cannot make a connection to different datasources.
Once a connection is opened to a datasource inside a transaction, you cannot open another connection to a different DataSource.
If you try to have different transactions in the two entity beans that you write then there is no way to maintain consistancy between the two DBs as update to one can fail while other succeeds.
The only way you can achieve what you are looking for is by using 2PC. (2 phased commit)
Beware, not all app servers support 2PC. (I know wls 6.1 does) not all drivers support 2PC, and not all resource managers support 2PC. So you'll have to read the documentation of your app server, driver, and databases before you can proceed.
regards,
Abhishek.
Similar Messages
-
Error retriving session EJB with getEJBObject() from handle
the Code i use is
CREATE:
Handle handle = user.getHandle();
session.setAttribute("user",handle);
GET:
Handle handle = (Handle)session.getAttribute("user");
UserEJB user = (UserEJB)handle.getEJBObject();
// the abowe row gets the error.
Error:
java.lang.ClassCastException: org.omg.stub.javax.ejb._EJBObject_Stub
ive read several topics that say that this should work but it doesnt??
The bean is a Stateful Session EJB.
Ive tried to recompile both client and server serveral times, to prevent te stubs from beeing different. But no result.
Help please !!!!!!try like this..
Create--
session.setAttribute("searchremote",tsremote.getHandle());
and get it like this....
Handle handle = (Handle)session.getAttribute("searchremote");
tsremote = (TradesSearchRemote)handle.getEJBObject();
if (tsremote == null)
tsremote = getBeanReference();
session.setAttribute("searchremote",tsremote.getHandle());
I am doing like this and it is working fine.... -
Stateless Session EJB hangs using URLConnection but WLS doesn't clean up
Hi
We have a stateless session EJB running under WLS 5.1 with service
pack 10 on Solaris.
The bean calls a remote HTTP server using the java.net.URLConnection
class and forwards the response to the EJB client. The bean is largely
working fine but some threads hang waiting on the HTTP response. Debug
statements, which are written immediately after the response has been
read and the connection has been closed, do not appear in our log for
the hung threads. The WebLogic Console displays these threads as "in
use" and a "netstat -an" displays the tcp connections as ESTABLISHED.
However, the access logs of the remote Apache server show the HTTP
connections of the threads in question completed successfully with
HTTP code 200. The Apache server is using keep-alive connections.
Some EJB threads are still waiting for something it seems.
Has anyody else experienced this when using URLConnection from
stateless session EJBs under WLS?
The second problem is why doesn't WLS time these threads out after
trans-timeout-seconds (we're using the default of 300 seconds)? The
WLS log shows no error messages relating to this problem.
I'm grateful for any info offered.
Thanks in advance
SteveIf you suspect that WLS protocol handler is at fault (and quite often it is),
one thing to try is (if you use Sun's JVM) to use Sun's HTTP protocol handler
instead of WLS (the most common symptom is when code which makes HTTP requests
works fine outside of WebLogic and you have problems getting it to work inside
WebLogic) :
replace
URL url = new URL("http://...");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
with
URL url = new URL(null, "http://...", new sun.net.www.protocol.http.Handler());
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
You will have to edit weblogic.policy to allow your code to specify protocol
handler.
Also note that transaction timeout is only checked on method boundaries, or
when your code attempts to do something with the database - it is not going to
interrupt thread which is waiting for HTTP response.
Steve Lock <[email protected]> wrote:
Hi
Thanks for the info. The remote HTTP server's access log shows that
the requests were successfully processed. Doesn't this mean that the
connection is then closed? I know the web server is using keep-alive
connections but I thought this was transparent to the client...?
Also why doesn't WLS remove the hung threads?
Steve
"Ignacio G. Dupont" <[email protected]> wrote in message news:<[email protected]>...
We have had a problem like yours with Weblogic 6.1 SP2 on Linux
The problem is sun's implementation of the HTTP connections doesn't have a
timeout, so if the other peer doesn't close the connection your threads will
be "locked" on the connection.
We have found searching the web that the Jakarta project has a package
called Jakarta commons that implements HTTP connections with an
setSoTimeout(int timeout) method so you can open the connections with your
desired timeout. You have to download the code from the CVS as the released
version doesn't support the timedout sockets yet.
When support for the JDK 1.4 version will be announced by Bea you could use
one of its new features that will allow you to pass arguments to the JVM to
specify the maximum socket connection stablising timeout and the max
inactivity on the socket too.
Hope it helps you.
Dimitri -
Deploy multiple instances of the same stateless session EJB
I have a stateless session bean.
The methods on the bean operate against DB tables.
Q: Can I deploy multiple instances of the same stateless session bean, but specify a different JNDI/datasource name in the deployment descriptor?
The method calls are all enclosed within a single invocation, just that I need to hit different databases (all with the same schema), and Id like to be able to lookup the EJB via a different JNDI name, and have the exact same functionality, just against different deployed datasources.
Does the spec allow/support this?
If not, any suggestions as to how to achieve this sort of functionality?
Im using JBoss 3.2.1 on Solaris, so Im not sure whether or not this is a JBoss "issue" or a limitation of the EJB Spec (or me being just plain wrong and trying to do something the "wrong way")
NickI have a stateless session bean.
The methods on the bean operate against DB tables.
Q: Can I deploy multiple instances of the same
stateless session bean, but specify a different
JNDI/datasource name in the deployment descriptor?
The method calls are all enclosed within a single
invocation, just that I need to hit different
databases (all with the same schema), and Id like to
be able to lookup the EJB via a different JNDI name,
and have the exact same functionality, just against
different deployed datasources.
Does the spec allow/support this?
If not, any suggestions as to how to achieve this sort
of functionality?
Im using JBoss 3.2.1 on Solaris, so Im not sure
whether or not this is a JBoss "issue" or a limitation
of the EJB Spec (or me being just plain wrong and
trying to do something the "wrong way")
NickI haven't done it but judging from the deployment descriptors yes.
For example if I have two bounded datasources java:/Database1 and java:/Database2
Lets say I have a session bean called MySession, then in your ejb-jar.xml you would have (notice that the desc, display, and ejb-name are the only differences)
<session>
<description>MySessionAlpha</description>
<display-name>MySessionAlpha</display-name>
<ejb-name>MySessionAlpha</ejb-name>
<home>com.mycorp.MySessionRemoteHome</home>
<remote>com.mycorp.MySessionRemote</remote>
<local-home>com.mycorp.MySessionLocalHome</local-home>
<local>com.mycorp.MySessionLocal</local>
<ejb-class>com.mycorp.MySessionFacadeBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<resource-ref>
<res-ref-name>jdbc/DataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</session>
<session>
<description>MySessionBeta</description>
<display-name>MySessionBeta</display-name>
<ejb-name>MySessionBeta</ejb-name>
<home>com.mycorp.MySessionRemoteHome</home>
<remote>com.mycorp.MySessionRemote</remote>
<local-home>com.mycorp.MySessionLocalHome</local-home>
<local>com.mycorp.MySessionLocal</local>
<ejb-class>com.mycorp.MySessionFacadeBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<resource-ref>
<res-ref-name>jdbc/DataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</session>
But now in the jboss.xml, we will have the following elements. What you may notice is that are bound to different remote and local jndi names. But the resource bindings are very different. The res-ref-name stays the same, but the jndi-name are different. I think this will work for you.
<session>
<ejb-name>MySessionAlpha</ejb-name> <jndi-name>ejb/com/mycorp/MySessionAlphaRemoteHome</jndi-name> <local-jndi-name>ejb/com/mycorp/MySessionAlphaLocalHome</local-jndi-name>
<resource-ref>
<res-ref-name>jdbc/datasource</res-ref-name>
<jndi-name>java:/Database1</jndi-name>
</resource-ref>
</session>
<session>
<ejb-name>MySessionBeta</ejb-name> <jndi-name>ejb/com/mycorp/MySessionBetaRemoteHome</jndi-name> <local-jndi-name>ejb/com/mycorp/MySessionBetaLocalHome</local-jndi-name>
<resource-ref>
<res-ref-name>jdbc/datasource</res-ref-name>
<jndi-name>java:/Database2</jndi-name>
</resource-ref>
</session> -
How to call session EJB from EP service in EP 7.0?
Hi,
I am trying to invoke stateless session EJB from my portal service. Both the service and EJB are deployed on the same server which is EP 7.0.
I found [this|http://help.sap.com/saphelp_nw70/helpdata/EN/42/9ddcc9bb211d72e10000000a1553f6/frameset.htm] in SAP help and tried to implement it (added PrivateSharingReference to portalapp.xml and implemented the code), but everytime I try to lookup the session bean and cast it using P4ObjectBroker.narrow() method, I get java.lang.ClassCastException. The object found in JNDI and my portal service have different classloaders, so I suppose this is the problem, but I don't know how to handle it...
Can anyone please help me?
Regards,
TomasHi Satya ,
please go though following blog for used DC concept.
Componentization of Webdynpro Application in CE7.1
In netweaver 7.1 interface controler is abstract and component controller is implementing interface controller so the context data and methods have to be implemented by component controller -
Updating data in mulitple databases
Hi,
I have a requirement in my project to update the data in two databases, when user updates data in the screen and saves it. We are using stateless session EJB to call the DAO. The update is using normal JDBC update statement.
If some thing goes wrong in update stmt in any of the database, does EJB has capability to rollback the update in another database as well. As both are in single transaction.
Pls advise on this. Your help is appreciated.
Thanks
Kumar.... I only added this constructor to be able to run your code:
public fillDbGui(){
setTitle("Fill DB GUI");
setSize(600,500);
setLocationRelativeTo(null);
try{
DriverManager.registerDriver( new com.mysql.jdbc.Driver() );
DriverManager.registerDriver( new sun.jdbc.odbc.JdbcOdbcDriver() );
connection = DriverManager.getConnection(DATABASE_URL, DATABASE_USER, USER_PASSWORD);
conc = connection.createStatement();
System.out.println("Successfully connected to database '" +DATABASE_NAME+ "'\n");
}catch(SQLException ex){
System.out.println("Connection failed\n");
JOptionPane.showMessageDialog( this, ex.getMessage(),
"Fill_DB_GUI: SQLException", JOptionPane.ERROR_MESSAGE);
db2vector();
public static void main(String args[]) {
new fillDbGui().setVisible(true);
private final String DATABASE_NAME = "test";
private final String DATABASE_URL = "jdbc:mysql://localhost:3306/" + DATABASE_NAME;
// private final String DATABASE_URL = "jdbc:odbc:" + DATABASE_NAME;
private final String TABLE_NAME = "testuhrand";
private final String DATABASE_USER = "root";
private final String USER_PASSWORD = "sql";
private Statement conc;
private Connection connection; -
Cluster and Session EJB replication
I have a dedicated Weblogic 5.1 box running with SP 6 serving up JSP and Servlets.
The Servlets do look ups for session EJBs, which are hosted on a separate box behind
a firewall. My question is:
If I implement clustering of the JSP/Servlet Weblogic Instance so that I have four machines in a cluster,
does Weblogic 5.1 or 6.0 replicate the handle to the session EJB's stub only so that in case server 1 crashes,
Server 2 will be able to retrieve a handle to the session EJBs?
Thanks,
Paul Richardson
If the handle is in the HttpSession, then the handle will be replicated. If
the EJB server fails over in WL 5.1, the stateful session EJBs will be lost.
WL 6.0 supports statefull session EJB replication for failover, but I
suggest that you not use it unless you have a specific architectural reason
to.
Cameron Purdy
Tangosol, Inc.
http://www.tangosol.com
+1.617.623.5782
WebLogic Consulting Available
"Paul Richardson" <[email protected]> wrote in message
news:[email protected]..
>
> I have a dedicated Weblogic 5.1 box running with SP 6 serving up JSP and
Servlets.
> The Servlets do look ups for session EJBs, which are hosted on a separate
box behind
> a firewall. My question is:
>
> If I implement clustering of the JSP/Servlet Weblogic Instance so that I
have four machines in a cluster,
> does Weblogic 5.1 or 6.0 replicate the handle to the session EJB's stub
only so that in case server 1 crashes,
> Server 2 will be able to retrieve a handle to the session EJBs?
>
>
> Thanks,
> Paul Richardson
-
Stateless session EJBs & "idempotent"
We need to declare a method as "idempotent" to take care of failure inside a
method call, For that to work the code inside should written in such way so
that repeated call to the same method should not give us diffrent result.
But why can't weblogic implement a partial rollback( Just like Oracle's save
point rollback, where you can rollback to certain point within a
transaction).
Because some times it is not possible to code in such a way to get the same
result every time(Incase of fail over)
Thanks
,Stateless session EJBs
Stateless session EJBs can have both a cluster-aware home stub and a
replica-aware EJBObject stub. By default, WebLogic Server provides failover
services for EJB method calls, but only if a failure occurs between method
calls. For example, failover is automatically supported if there is a
failure after a method completes, or if the method fails to connect to a
server. When failures occur while an EJB method is in progress, WebLogic
Server does not automatically failover from one server to another.
This default behavior ensures that database updates within an EJB method are
not "duplicated" due to a failover scenario. For example, if a client calls
a method which increments a value in a datastore and WebLogic Server fails
over to another server before the method completes, the datastore would be
updated twice for the client's single method call.
If methods are written in such a way that repeated calls to the same method
do not cause duplicate updates, the method is said to be "idempotent." For
idempotent methods, WebLogic Server provides the
stateless-bean-methods-are-idempotent deployment property. If you set this
property to "true" in weblogic-ejb-jar.xml, WebLogic Server assumes that the
method is idempotent and will provide failover services for the EJB method,
even if a failure occurs during a method call.
Vishal,
I wouldn't think you would have a problem doing RMI communication from a Entity
Bean - - for instance, when a WLS instance 'hosts' an EJB that communicates to
a different WLS instance that 'hosts' an EJB that communication occurs via RMI.
Chuck Nelson
Developer Relations Engineer
BEA Technical Support -
Stateful session EJB is deployed on cluster members A and B. Client calls a method
on the bean and the request is routed to server A, then A is shut down. The client's
next method invocation is routed to server B where the bean's state has been replicated.
Server A re-joins the cluster and B is shut down, the request routed to A results
in the following:
java.rmi.NoSuchObjectException: Activation failed with: java.io.StreamCorruptedException:
InputStream does not contain a serialized object
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:849)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:168)
at weblogic.common.internal.ReplacerObjectInputStream.<init>(ReplacerObjectInputStream.java:33)
at weblogic.common.internal.ReplacerObjectInputStream.<init>(ReplacerObjectInputStream.java:43)
at weblogic.common.internal.ReplacerObjectInputStream.<init>(ReplacerObjectInputStream.java:54)
at weblogic.ejb20.swap.PassivationUtils.read(PassivationUtils.java:50)
at weblogic.ejb20.swap.ReplicatedMemorySwap.read(ReplicatedMemorySwap.java:111)
at weblogic.ejb20.manager.StatefulSessionManager.getBean(StatefulSessionManager.java:178)
at weblogic.ejb20.manager.StatefulSessionManager.preInvoke(StatefulSessionManager.java:236)
at weblogic.ejb20.internal.BaseEJBObject.preInvoke(BaseEJBObject.java:113)
at weblogic.ejb20.internal.StatefulEJBObject.preInvoke(StatefulEJBObject.java:148)
at com.access360.enrole.apps.ejb.organization.SearchManagerBeanEOImpl.findAllPeople(SearchManagerBeanEOImpl.java:644)
at com.access360.enrole.webclient.organization.person.PeopleList.getPeople(PeopleList.java:148)
at com.access360.enrole.webclient.organization.person.PeopleListServlet.constructPeopleListXML(PeopleListServlet.java:284)
at com.access360.enrole.webclient.organization.person.PeopleListServlet.service(PeopleListServlet.java:238)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:213)
at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:275)
at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:183)
at com.access360.enrole.webclient.organization.person.SubmitPersonAddServlet.forwardToPeopleList(SubmitPersonAddServlet.java:134)
at com.access360.enrole.webclient.organization.person.SubmitPersonAddServlet.service(SubmitPersonAddServlet.java:114)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:213)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:1265)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:1631)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
We are certain that the EJB's entire object graph is Serializable. Any comments on
this failover scenario?
Alex Rodriguez
Software Engineer, Access360
[email protected]
Rajesh,
Thanks for the reply. We are running WL 6.0 SP2 with RP3. We cannot reproduce it
consistently. In your reply you mention "... and EJB handles". Does that refer to
another patch?
As for the code, we will run tests with a scaled down version of the stateful bean
and a simple client servlet. I will post the code asap. The high level call sequence
is: servlet service() -> lookup ejb home -> get cluster aware stub from home -> put
bean handle in http session -> call bean method -> server A goes down -> next call
to the bean -> get handle from replicated http session -> get bean from handle ->
request is routed to server B. java.io.StreamCorruptedException is thrown, sometimes,
when server A re-joins the cluster and a request is routed to it (i.e. server B is
shut-down). One thing I did not mention is that the bean is deployed on server A,
and server A is also the Admin server. We are considering not using the Admin server
to deploy the bean, however, but will add another Managed server.
Will contact support about CR073917: can it be applied to WL 6.0 SP3 with RP3?
Regards,
Alex J. Rodriguez
Rajesh Mirchandani <[email protected]> wrote:
>
>Alex,
>
>Are you able to consitently reproduce this? Could you post your code here?
>
>What version of the Server with Service pack are you using?
>
>If you are using WLS 6.1SP2 and EJB handles contact support and get a patch
>for CR073917.
>
>
>"Alex J. Rodriguez" wrote:
>
>> Stateful session EJB is deployed on cluster members A and B. Client calls
>a method
>> on the bean and the request is routed to server A, then A is shut down.
>The client's
>> next method invocation is routed to server B where the bean's state has
>been replicated.
>> Server A re-joins the cluster and B is shut down, the request routed to
>A results
>> in the following:
>>
>> java.rmi.NoSuchObjectException: Activation failed with: java.io.StreamCorruptedException:
>> InputStream does not contain a serialized object
>> at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:849)
>> at java.io.ObjectInputStream.<init>(ObjectInputStream.java:168)
>> at weblogic.common.internal.ReplacerObjectInputStream.<init>(ReplacerObjectInputStream.java:33)
>> at weblogic.common.internal.ReplacerObjectInputStream.<init>(ReplacerObjectInputStream.java:43)
>> at weblogic.common.internal.ReplacerObjectInputStream.<init>(ReplacerObjectInputStream.java:54)
>> at weblogic.ejb20.swap.PassivationUtils.read(PassivationUtils.java:50)
>> at weblogic.ejb20.swap.ReplicatedMemorySwap.read(ReplicatedMemorySwap.java:111)
>> at weblogic.ejb20.manager.StatefulSessionManager.getBean(StatefulSessionManager.java:178)
>> at weblogic.ejb20.manager.StatefulSessionManager.preInvoke(StatefulSessionManager.java:236)
>> at weblogic.ejb20.internal.BaseEJBObject.preInvoke(BaseEJBObject.java:113)
>> at weblogic.ejb20.internal.StatefulEJBObject.preInvoke(StatefulEJBObject.java:148)
>> at com.access360.enrole.apps.ejb.organization.SearchManagerBeanEOImpl.findAllPeople(SearchManagerBeanEOImpl.java:644)
>> at com.access360.enrole.webclient.organization.person.PeopleList.getPeople(PeopleList.java:148)
>> at com.access360.enrole.webclient.organization.person.PeopleListServlet.constructPeopleListXML(PeopleListServlet.java:284)
>> at com.access360.enrole.webclient.organization.person.PeopleListServlet.service(PeopleListServlet.java:238)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:213)
>> at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:275)
>> at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:183)
>> at com.access360.enrole.webclient.organization.person.SubmitPersonAddServlet.forwardToPeopleList(SubmitPersonAddServlet.java:134)
>> at com.access360.enrole.webclient.organization.person.SubmitPersonAddServlet.service(SubmitPersonAddServlet.java:114)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:213)
>> at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:1265)
>> at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:1631)
>> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
>> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>>
>> We are certain that the EJB's entire object graph is Serializable. Any
>comments on
>> this failover scenario?
>>
>> Alex Rodriguez
>> Software Engineer, Access360
>> [email protected]
>
-
Problems importing Session Ejb in Creator
Hi all,
I've tries to import a Session Ejb in a web app, usng Creator2.
I have created the MyEjb.jar containing the ejb's classes, and the deployment descriptors. The ejb do not use any data source.
Then, I've imported the ejb using the provided procedure:
Enterprise Java Beans -> Add set of Session EJBs
I've imported the MyEbj.jar file: I see the Ejb in the palette, and I can drag&drop the method I need.
The problem is when I try to "run" the web application. I have the following excpetion:
java.lang.NullPointerException
at com.sun.rave.ejb.EjbDataSourceServiceImpl.getProjectDataSourceInfo(EjbDataSourceServiceImpl.java:66)
at com.sun.rave.jsf.project.ext.RaveProjectWebModule.getRequestedResources(RaveProjectWebModule.java:78)
at com.sun.rave.jsf.project.ext.RaveWebActionProvider.updateWebXml(RaveWebActionProvider.java:806)
at com.sun.rave.jsf.project.ext.RaveWebActionProvider.invokeAction(RaveWebActionProvider.java:172)
at org.netbeans.modules.project.ui.actions.MainProjectAction.actionPerformed(MainProjectAction.java:90)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:231)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:231)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1774)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
[catch] at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
and also:
Error occured when trying to parse the ejb data source file C:\work\Progetti\AreaIt\ProvaWorkSpace\lib\ejb-sources\ejb-refs.xml
org.xml.sax.SAXParseException: Premature end of file.
The file is ejb-refs.xml is empty!
Where is the problem? Any idea ? Who actually creates the ejb-refs.xml file?
Any suggestion?
Thanks a lot.
MarcoPlease, be aware that a value of RMI-IIOP port for Sun Application Server 8.1, bundled with Creator 2.0, is different from this one for Sun Application Server 8.2, bundled with Creator 2.1:
Sun Application Server 8.1, Creator 2.0 - 23700
Sun Application Server 8.2, Creator 2.1 - 24700 -
Deploying Session EJB From Jdev9i(Beta) - OC4J 9i
Hi All ,
I wanted from u , i have recently Upgraded to Oracle 9i 1.0.2.2.1 (OC4J) . Now i want a simple Step wise process as how can i deploy my Ejb (Session Bean ) into the OC4J container and Use its DataSource .
Is it possible to deploy using Jdev 9i (Beta) .
Can any one please help me out to point to a Documentaion , give me a breif process .
Regards
AsifAsif -
Yes you can use Jdeveloper 9i beta to deploy your session ejb.
Step 1 should be setting up your Data Source. In the System
Navigator Panel expand the "Connections" listing. Right-click
on "Database" and select "New Connection..." - follow the
wizard's instructions to set up your data source. Step 2 should
be setting up a connection to the OC4J container - again on the
System Navigator Panel ->Connections->Application Servers -
follow the instructions there. I am assuming that you have
developed your session ejb using Jdeveloper, right click on
your .jpr entry (or wherever suits you) and choose "New..." then
Deployment Profiles. You need to package your session ejb into a
jar file and I would recommend packaging your jar file into an
ear file (it really helps for clean deployment). If you have a
web portion, package that and make it dependent on the jar file
just to keep it straight. Once you have these, you will be able
to right click on the jar or web file and deploy to an ear file,
or straight to the server. If this is what you are looking for,
you will then just select this and away you go.
Apparently there are some howtos here:
http://otn.oracle.com/docs/products/jdev/howto.html
although I don't know how good they are.
I wasn't quite sure what you were looking for so this post is
vague. If you have specific questions, let me know and I will
try and answer them!
Cheers
Ray -
Why/When would you use Session EJB instead of Entity EJB to access Database values
You might use a Session Bean to access the database when you didn't want the overhead of Entity Beans or if the data you were retrieving didn't relate to the entity structure easily.
Have a look at the Fast Lane Reader pattern in the J2EE Design Patterns section to get more information about an example. Here the data is only being read and presented to the user so support for updating the values, security and concurrency isn't needed and is purely overhead.
Hope this helps. -
Not seeing persistEntity or mergeEntity method when creating a session EJB
Hi all,
I am using JDev 11g to develop an ADF application. I have finished creating an entity EJB from database tables. Then I want to create a session EJB. In JDev, I do not see persistEntity or mergeEntity method in "<Core Facade Methods>"; rather, I am seeing another method
public Object queryByRange(String jpqlStmt,int firstResult,int maxResults)
listed there.
Could you please let me know why? I am expecting to have persistEntity and mergeEntity methods included in the final created session EJB.
Thank you.Hi,
Thank you for your reply. But I am still not sure how to use the persist and merge methods from EntityManager. Either I want in the session EJB creation wizard to have persistEntity and mergeEntity to appear under "Core Facade methods", or I want to add these methods in the generated bean java file. I tried the latter by adding these two methods in the bean file, but I got an exception at runtime.
Please privide some more information. Thank you very much. -
Hi
We are using weblogic 7.0 sp2. We have clustured environment. 3 instances in one
cluster.
We have application deployed on one clluster and ejbs' deployed on another cluster.
Our weblogic xml has session replication tag set for inmemory replication.
Now in war we are looking up session bean and storing its remote handle in session,
it gives class cast exception. I have reead we should not store remote object
of entity in session but is it also true for stateless session bean.
Do u think if i remove session beans remote from session this should be solved,
if this is the reasion i m getting classcast can someone tell me why ?
Thanks a lot
Pranav
Hi,
If it's necessary to keep the state of the bean for the next time, keep the ejb's handle. Otherwise, I think it's better to keep the home handle.(to avoid the bean time out issues.) If state is not needed then u can can make it a stateless, right?
Also please ensure that not more than on client is using the same insatnce of stateful session bean
concurrently. Synchronize the code appropriately
[email protected] -
Problems integrating JSF managed bean with Session EJB with JDeveloper
HI All,
I am developeing a JSF-EJB application using Jdeveloper11g. On deploying the application I am getting the following errors on deployment.
<19/08/2010 2:53:49 PM EST> <Error> <Deployer> <BEA-149265> <Failure occurred in the execution of deployment request with ID '1282193629318' for task '17'. Error is: 'weblogic.application.ModuleException: Could not setup environment'
weblogic.application.ModuleException: Could not setup environment
at weblogic.servlet.internal.WebAppModule.activateContexts(WebAppModule.java:1499)
at weblogic.servlet.internal.WebAppModule.activate(WebAppModule.java:442)
at weblogic.application.internal.flow.ModuleStateDriver$2.next(ModuleStateDriver.java:375)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:41)
at weblogic.application.internal.flow.ModuleStateDriver.activate(ModuleStateDriver.java:95)
Truncated. see log file for complete stacktrace
Caused By: weblogic.deployment.EnvironmentException: [J2EE:160101]Error: The ejb-link 'MetaDataBean' declared in the ejb-ref or ejb-local-ref 'MetaData' in the application module 'ViewControllerWebApp.war' could not be resolved. The target EJB for the ejb-ref could not be found. Please ensure the link is correct.
at weblogic.deployment.BaseEnvironmentBuilder.addEJBLinkRef(BaseEnvironmentBuilder.java:453)
at weblogic.deployment.EnvironmentBuilder.addEJBReferences(EnvironmentBuilder.java:485)
at weblogic.servlet.internal.CompEnv.activate(CompEnv.java:157)
at weblogic.servlet.internal.WebAppServletContext.activate(WebAppServletContext.java:3117)
at weblogic.servlet.internal.WebAppModule.activateContexts(WebAppModule.java:1497)
Truncated. see log file for complete stacktrace
>
<19/08/2010 2:53:49 PM EST> <Error> <Deployer> <BEA-149202> <Encountered an exception while attempting to commit the 1 task for the application 'data-catalog'.>
<19/08/2010 2:53:49 PM EST> <Warning> <Deployer> <BEA-149004> <Failures were detected while initiating deploy task for application 'data-catalog'.>
<19/08/2010 2:53:49 PM EST> <Warning> <Deployer> <BEA-149078> <Stack trace for message 149004
weblogic.application.ModuleException: Could not setup environment
at weblogic.servlet.internal.WebAppModule.activateContexts(WebAppModule.java:1499)
at weblogic.servlet.internal.WebAppModule.activate(WebAppModule.java:442)
at weblogic.application.internal.flow.ModuleStateDriver$2.next(ModuleStateDriver.java:375)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:41)
at weblogic.application.internal.flow.ModuleStateDriver.activate(ModuleStateDriver.java:95)
Truncated. see log file for complete stacktrace
Caused By: weblogic.deployment.EnvironmentException: [J2EE:160101]Error: The ejb-link 'MetaDataBean' declared in the ejb-ref or ejb-local-ref 'MetaData' in the application module 'ViewControllerWebApp.war' could not be resolved. The target EJB for the ejb-ref could not be found. Please ensure the link is correct.
at weblogic.deployment.BaseEnvironmentBuilder.addEJBLinkRef(BaseEnvironmentBuilder.java:453)
at weblogic.deployment.EnvironmentBuilder.addEJBReferences(EnvironmentBuilder.java:485)
at weblogic.servlet.internal.CompEnv.activate(CompEnv.java:157)
at weblogic.servlet.internal.WebAppServletContext.activate(WebAppServletContext.java:3117)
at weblogic.servlet.internal.WebAppModule.activateContexts(WebAppModule.java:1497)
Truncated. see log file for complete stacktrace
Thanks
Edited by: user5108636 on 18/08/2010 22:46Please find attached the source code of JSF managed bean, local business interface, session bean and web.xml
MANAGED BEAN_
package view.backing;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.component.UISelectItems;
import javax.faces.component.html.HtmlSelectManyListbox;
import model.ejb.session.MetaDataBean;
public class SearchMetaDataBean {
@EJB MetaDataBean metaDataService;
private List<String> tables;
private List<String> columns;
private HtmlSelectManyListbox selectManyListbox1;
private UISelectItems selectItems1;
public void setTables(List<String> tables) {
this.tables = tables;
public List<String> getTables() {
return metaDataService.getTables();
public void setColumns(List<String> columns) {
this.columns = columns;
public List<String> getColumns() {
return columns;
public void setSelectManyListbox1(HtmlSelectManyListbox selectManyListbox1) {
this.selectManyListbox1 = selectManyListbox1;
public HtmlSelectManyListbox getSelectManyListbox1() {
return selectManyListbox1;
public void setSelectItems1(UISelectItems selectItems1) {
this.selectItems1 = selectItems1;
public UISelectItems getSelectItems1() {
return selectItems1;
LOCAL INTERFACE_
package model.ejb.session;
import java.util.List;
import javax.ejb.Local;
@Local
public interface MetaDataLocal {
public List<String> getTables();
public List<String> getColumns(String tableName);
SESSION BEAN_
package model.ejb.session;
import javax.ejb.Local;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.Stateless;
import javax.sql.DataSource;
@Stateless(name="MetaData")
@Local
public class MetaDataBean implements MetaDataLocal{
@Resource(name="jdbc/DWDS")
private DataSource dataSource;
private Connection connection;
private List<String> tables = new ArrayList<String>();
private List<String> columns = new ArrayList<String>();
private DatabaseMetaData dmd;
@PostConstruct
public void initialize(){
try{
connection = dataSource.getConnection();
DatabaseMetaData dmd;
dmd = connection.getMetaData();
}catch(SQLException sqle){
sqle.printStackTrace();
public MetaDataBean() {
public List<String> getTables(){
try{
if (dmd ==null){
//System.out.println("Database meta data not available");
tables.add("None");
}else{
ResultSet rs = dmd.getSchemas();
ResultSet rs1 = null;
while(rs.next()) {
if (rs.getString(1).equalsIgnoreCase("AV_DATA")){
rs1 = dmd.getTables(null,rs.getString(1),"%",null);
while(rs1.next()) {
tables.add(rs1.getString(3));
}catch (SQLException sqle){
sqle.printStackTrace();
return tables;
public List<String> getColumns(String tableName){
try{
ResultSet rsColumns = dmd.getColumns("", "AV_DATA", tableName, null);
while(rsColumns.next()){
columns.add(rsColumns.getString(4));
}catch (SQLException sqle){
sqle.printStackTrace();
return columns;
WEB.XML_
<?xml version = '1.0' encoding = 'windows-1252'?>
<web-app 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/web-app_2_5.xsd"
version="2.5" xmlns="http://java.sun.com/xml/ns/javaee">
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<ejb-local-ref>
<ejb-ref-name>MetaData</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local>model.ejb.session.MetaDataLocal</local>
<ejb-link>MetaDataBean</ejb-link>
</ejb-local-ref>
</web-app>
Edited by: user5108636 on 18/08/2010 22:45
Edited by: user5108636 on 18/08/2010 22:46
Maybe you are looking for
-
I'm using iDVD 6.0.4 and am having a problem with the menu system. Everything is fine, and the project is about ready to burn, however whenever I go to add a still picture for the background of the two Chapters selection screens, the Motion Menus tim
-
Creating RFC destination in Visual Administrator results in error
Hi. I am trying to set up ESS and MSS on a EP 6.0 with SP15. According to a Post-installation guide for SLD i have to create a RFC destination, but when i save the settings i get the following error: Error changing bundel's properties, see LOG for de
-
Webcache Team Question - Urgent please
Hi, I have a pair of 9iAS R1 Servers running forms listener servlet 6i, and reports over cgi - there is a dozen or so reasons as to why I'm compelled to use this configuration. Fronting these I have a webcache 9.0.2 box that is correctly configured f
-
Using JDK1.4 with Weblogic 6.1
Does ne1 know of any documents(Installion Procedure...) available on Using JDK1.4 with Weblogic 6.1 I need to upgrade from JDK 1.3 to 1.4 using Wlserver6.1 Thanks, Lloyd [att1.html]
-
How do I change the perspective of an image not created in Illustrator?
I want to change the perspective of an image I created using another program. I want to add this image to a project I am working on using Illustrator, but the perspective is off.