EJB and helper classes ...
I have created an EJB component which uses
some helper classes in JDeveloper 3.0 .
The component deploys sucessfully to OAS 4.0.8.1 . When I try to run the component through an applet ( including the _client.jar
in the archive tag) , the applet does not find the helper classes . How I do i include the helper classes in the _client.jar file ?
Hi,
Try to put all the EJB's in a single package and import the package. I
can think of this solution right now, will keep posting for updates.
Regards
Raj
Daniel Westerdale wrote:
Hi,
I have a number of EJBs that each use a common set interfaces,
exceptions and Value beans. If I deploy using the iasdeploy command
line, then I must package up all these common classes within each of
the EJB modules - leading to a lot of duplicate code.
Is there a smarter a way of packaged the common classes so that I can
include them in the .EAR file but only in one module.
Note: I would prefer to only argument the IAS classpath with 3rd party
classes that rarely change and not these common classes e.g. Jlog
cheers
Daniel
Try our New Web Based Forum at http://softwareforum.sun.com
Includes Access to our Product Knowledge Base!
Similar Messages
-
(261680070) Q SYNCH-11 How do my web service methods accees EJBs and java classes?
A<SYNCH-11> How do my web service methods accees EJBs and java classes?
A<SYNCH-11> It is simple to use java classes, just do it as you would ordinarily.
The .jws file really contains a simple class so you can program with it in the same
way that you would use a regular Java class.
To use an EJB you can go and access it directly as you would with any EJB remote
client (lookup home stub, create, etc) or if the EJB is deployed to WLS you can use
a control to provide a very simple wrapper to the EJB. We will see this in detail
on Thursday in the ADVC module.Futher information about the possibility of callback:
It may be possible for a synchronous only web service (i.e. MS .net) to even paticipant
in the callback functionality of asynchronous web services. If the client implements
the appropriate methods for the callback but listens for them on a different port
or binding than the SOAP request, then web service may be able to build a response
if the client's "callback URL" is submitted as the beginning part of a conversation.
Watch the BEA developer forum (http://dev2dev.bea.com) for more information about
this approach and other tips and techniques for building web services.
"Adam FitzGerald" <[email protected]> wrote:
>
Q<SYNCH-03> I heard that MS .net only implements synchrnonus method? If
this is true.
Does it means my async methods will only work with J2EE clients?
A<SYNCH-03> I do not know the limitations of .net but let me point out that
is very
difficult to provide asynchronous web service method invocation (this is
different
from an asynchronous web service). HTTP as a general communication protocol
is based
on a request and response paradigm so your client libraries will mostly
likely be
expecting a response even if it is empty (check the asynchronous example
from today
to see that the start method still returns an empty response). You must
distinguish
this from the notion of an asynchronous web service which is a business
operation
that occurs on the server whose return value/result is not directly associated
with
building response to the client. An asynchronous web service can (and generally
will)
be started and stopped with web service operations that are invoked synchronously.
Thus MS .net clients can still be client to WLS hosted web services. -
Concept of util and helper classes
whats the concept behind helper and util classes, how to divide code according to both perspective would any one state clear separation line b/w them.
They're just names, dude
-
Deploy EAR. Both ejb and war share classes?
how do you package an ear that has both ejbs and wars that share a common set of classes.
I have read through all the messages that state to add the Manifest entry Class-Path.
I've added it to the war, ejb and ear Class-Path and I still get the same NoClassDefFoundError.
Does anybody truely know how to get this to work? I've tried many things, and it sounds like this should work/.....?????Hi Madhav,
You need to specify Class-Path in ejb-jar MANIFEST.MF,
not in the ear.
Regards,
Slava Imeshev
"Madhav Inamti" <[email protected]> wrote in message
news:[email protected]..
>
I have tried the manifest classpath too and it just does not work. I had alibrary
jar specified the ear's manifest classpath and the library jar in the earfile
too. This should have made the ear classloader load the library jar.Didn't work.
Does anybody on this newsgroup know about this .. ?
"Dimitri I. Rakitine" <[email protected]> wrote:
Since ejb classloader is a parent of a webapp classloader, you should
only
add these jar's to your ejb-jar Class-Path Manifest entry. Make sure
your dependencies
hierarchy is ok - NoClassDefFoundError usually means that the class
itself was found,
but not it's dependent class(es).
Michael <[email protected]> wrote:
how do you package an ear that has both ejbs and wars that share acommon set of classes.
I have read through all the messages that state to add the Manifestentry Class-Path.
I've added it to the war, ejb and ear Class-Path and I still get thesame NoClassDefFoundError.
Does anybody truely know how to get this to work? I've tried many
things,
and it sounds like this should work/.....?????
Dimitri -
My application was designed based on MVC Architecture. But I made some changes to HMV base on my requirements. Servlet invoke helper classes, helper class uses EJBs to communicate with the database. Jsps also uses EJBs to backtrack the results.
I have two EJBs(Stateless), one Servlet, nearly 70 helperclasses, and nearly 800 jsps. Servlet acts as Controler and all database transactions done through EJBs only. Helper classes are having business logic. Based on the request relevant helper classed is invoked by the Servlet, and all database transactions are done through EJBs. Session scope is 'Page' only.
Now I am planning to use EJBs(for business logic) instead on Helper Classes. But before going to do that I need some clarification regarding Network traffic and for better usage of Container resources.
Please suggest me which method (is Helper classes or Using EJBs) is perferable
1) to get better performance and.
2) for less network traffic
3) for better container resource utilization
I thought if I use EJBs, then the network traffic will increase. Because every time it make a remote call to EJBs.
Please give detailed explanation.
thank you,
sudheer<i>Please suggest me which method (is Helper classes or Using EJBs) is perferable :
1) to get better performance</i>
EJB's have quite a lot of overhead associated with them to support transactions and remoteability. A non-EJB helper class will almost always outperform an EJB. Often considerably. If you plan on making your 70 helper classes EJB's you should expect to see a dramatic decrease in maximum throughput.
<i>2) for less network traffic</i>
There should be no difference. Both architectures will probably make the exact same JDBC calls from the RDBMS's perspective. And since the EJB's and JSP's are co-located there won't be any other additional overhead there either. (You are co-locating your JSP's and EJB's, aren't you?)
<i>3) for better container resource utilization</i>
Again, the EJB version will consume a lot more container resources. -
Obtaining principal in EJB helper classes
I have a pretty typical EJB setup where the actual EJBs delegate a lot of work
off to helper classes which are simple java classes. Some of these helpers need
access to the principal currently executing on this container thread. Currently,
I am passing the principal as a parameter in every method signature on the helpers
which need it. But as you can probably guess that approach is quickly becoming
unweildy.
Ideally, what I would like to do is to have access to the principal associated
with the currently executing thread. I can mimic this by setting thread-local
variables in the EJB prior to calling helpers. But I was wondering (ok, hoping)
that there was already a way to access this information (either through weblogic
classes or MBeans). At this point, I dont even care if it is not portable.
P.S., I use WL6.1
Thank you in advance,
Steve>
The helper methods do database querries etc and return results that the EJB sends onwards to clients. If these methods
are NOT synchronized (and the ejbs share the static class) won't it cause concurrency errors? I think most of our methods are not
synchronized (and it doesn't seem to cause any concurrency errors so far... though the system have not beeen stressed test that much,
and concurrency bugs tends to pop up later and randomly :P).
>
No, if you dont have any static data variables in the Java classes, static method as such will not cause concurrency errors, and the methods should not be synchronized.
If you have any synchronized methods and they take a while to execute, that could become a bottleneck in itself, because different threads waiting for each other,
so make sure you dont have any synchronized methods where it is not explicitly needed.
Think of a static method (without static data in the class being manipulated) as a plain function in another programming-language.
>
We have some scaleability problems with the EJBs... It seems as if they do not run concurrently. If we do a stress test with several threads calling the EJBs their response time increases by a too large factor to feel comfortable...
>
Apparently, you do have a some scaling/concurrency problem, which could have many causes -- transaction locking and clashes in the database, poorly configured database, network congestion, problems in the EJB architecture, etc -- can be many reasons...
The general idea to debug, is first to find out exactly what calls in your code that take longest time to execute (profiling, logging, System.out.println's are useful) when you put parallel load on your system -- rather than just seeing "the whole application seems slow" -- from there you can move on, "divide&conquer" the problem, etc... -
Difference between narrow() method usage and simple class cast for EJB
Hi,
I have a very simple question:
what is the difference between PortableRemoteObject.narrow(fromObj,
toClass) method usage and simple class cast for EJB.
For example,
1)
EJBObject ejbObj;
// somewhere in the code the home.create() called for bean ...
ABean a = (ABean)PortableRemoteObject.narrow(ejbObj,ABean.class);
OR
2)
EJBObject bean;
// somewhere in the code the home.create() called for bean ...
ABean a = (ABean)ejbObj;
Which one is better?
P.S. I'm working with WL 6.1 sp2
Any help would be appreciated.
Thanks in advance,
Orly[email protected] (Orly) writes:
Hi,
I have a very simple question:
what is the difference between PortableRemoteObject.narrow(fromObj,
toClass) method usage and simple class cast for EJB.
For example,
1)
EJBObject ejbObj;
// somewhere in the code the home.create() called for bean ...
ABean a = (ABean)PortableRemoteObject.narrow(ejbObj,ABean.class);
OR
2)
EJBObject bean;
// somewhere in the code the home.create() called for bean ...
ABean a = (ABean)ejbObj;
Which one is better?(1) is mandated by the spec. It is required because CORBA systems may
not have sufficient type information available to do a simple case.
P.S. I'm working with WL 6.1 sp2 You should always use PRO.narrow()
andy -
Add helper class public parts as used DC in EJB DC
Hi Experts,
I have created a JAVA DC project containing the helper classes.
For this helper classes i have created a Jar file.
I have also created two public parts
1) with an option Can be packaged into other build results (e.g. SDAs)
2) with an option Provides an API for developing/compiling other DCs
Now i want to use these public parts in my EJB DC.
I have added the API public part in my EJB DC as build time design time and run time.
Now when i am getting java.lang.NoClassDefFoundError: for the class defined in JAVA DC helper class.
Can you help me in resolving this?
Regards,
Ashish ShahHi
I have done following things:
1) I have a java DC containing helper classes and an EJB DC referring to it.
2) Now to access this EJB DC, I have created a java command bean DC.
3) And I am using this command bean Java dc in my WebDynpro application.
4) Now for deploying the helper class, I have created a library project.
5) To this library project I have added the SDA and API public part of helper class as used dc.
6) I have added this java library file as used DC in WebDynpro DC and in EJB DC.
7) I have added the library reference to the WebDynpro DC for J2ee server component library DC As pg.comaptsc~dc_aptjl
8) When i checked in Visual admin i could see the Assembly (SDA) helper class jar file.
In my helper class files, I am getting this warning.
Checking package reservation
Warning: Package pg.com.apt.help.cls is not reserved for DC : apt/sc/dc_apthc.
Now in my webdynpro DC when I refer to the helper class through the EJB, I get this error.
java.lang.NoClassDefFoundError: pg/com/apt/help/cls/TargetMarket at pg.com.atos.WebModuleProject.FetchSDCDataBean.SearchGTINTMDataEJB(FetchSDCDataBean.java:133) at pg.com.atos.WebModuleProject.FetchSDCDataObjectImpl0.SearchGTINTMDataEJB(FetchSDCDataObjectImpl0.java:119) ... 35 more ; nested exception is: java.lang.NoClassDefFoundError: pg/com/apt/help/cls/TargetMarket
Can you please guide on what I am missing.
Thanks in advance.
Regards,
Ashish Shah
Edited by: ashish shah on Dec 18, 2007 3:23 PM -
Reference EJB from servlet's action/helper classes
Hello
How to make a reference to stateless session bean from one of the helper classes of a servlet WITHOUT using any of these:
* dependency injection (like @EJB) - I think this is not supported in this kind of class, EJB references can be injected only to servlets themselves or some other things (but not objects of classes "accompanying" a servlet)
* home or local home interfaces (I would like to avoid writing them)
* using mappedName (either in @Stateless or in ejb-jar) - since meaning of this is application-server dependent and thus not portable.
By a "class accompanying a servlet" / "helper class" I mean utility or action classes, like MyActionClass, which would be instantiated and then used by a aforementioned servlet.
Thanks.The EJB dependency must be looked up via the java:comp/env namespace since as you point out
Java EE 5 environment annotations are not supported on POJOs. However, the dependency itself
can either be defined using @EJB on some other managed class in the .war or within the
web.xml. We have an entry in our EJB FAQ that has the details :
https://glassfish.dev.java.net/javaee5/ejb/EJB_FAQ.html#POJOLocalEJB
Also, whenever the client component resides in the same application as the target EJB (which is
required for Local access but not for Remote access) there is no need to use mappedName to
resolve the EJB dependency. It is either automatically resolved if the business interface type of
the EJB dependency is only exposed by a single EJB in the application, OR the beanName()
/ ejb-link attributes can be used to unambiguously identify the target EJB using ejb-name.
You can find more about this in the FAQ as well. -
EJB environment question (static helper classes)
We're using JBoss as AS containing several stateless session beans.
Now, we have certain helper classes that are abstract and contain static methods. Is this a problem for the EJBs? All of them use these helper classes all over their methods. Are they sharing the static class and will slow down somehow? Or is each EJB using its version of the class and can run concurrently?
Should we rethink this and put an INSTANCE of each helper class in each ejb instead of using static methods in the helper class?
Now in EJB method:
Helper.calculateStuff();
Should it be?
Helper h = new Helper(); // defined when ejb is created
helper.calculateStuff();
Edited by: JAeon on Sep 8, 2008 12:21 AM
Edited by: JAeon on Sep 8, 2008 12:22 AM>
The helper methods do database querries etc and return results that the EJB sends onwards to clients. If these methods
are NOT synchronized (and the ejbs share the static class) won't it cause concurrency errors? I think most of our methods are not
synchronized (and it doesn't seem to cause any concurrency errors so far... though the system have not beeen stressed test that much,
and concurrency bugs tends to pop up later and randomly :P).
>
No, if you dont have any static data variables in the Java classes, static method as such will not cause concurrency errors, and the methods should not be synchronized.
If you have any synchronized methods and they take a while to execute, that could become a bottleneck in itself, because different threads waiting for each other,
so make sure you dont have any synchronized methods where it is not explicitly needed.
Think of a static method (without static data in the class being manipulated) as a plain function in another programming-language.
>
We have some scaleability problems with the EJBs... It seems as if they do not run concurrently. If we do a stress test with several threads calling the EJBs their response time increases by a too large factor to feel comfortable...
>
Apparently, you do have a some scaling/concurrency problem, which could have many causes -- transaction locking and clashes in the database, poorly configured database, network congestion, problems in the EJB architecture, etc -- can be many reasons...
The general idea to debug, is first to find out exactly what calls in your code that take longest time to execute (profiling, logging, System.out.println's are useful) when you put parallel load on your system -- rather than just seeing "the whole application seems slow" -- from there you can move on, "divide&conquer" the problem, etc... -
Using Timer and TimerTask classes in EJB's(J2EE)
Does J2EE allow us to use Timer and TimerTask classes from java.util package in SessionBean EJB's ( Statless or Statefull )?.
If J2EE does allow, I am not sure how things work in practical, Lets take simple example where a stateless SessionBean creates a Timer class
and schedules a task to be executed after 5 hours and returns. Assuming
GC kicks in many times in 5 hours, I wonder if the Timer object created by survives the GC run's so that it can execute the scheduled tasks.
My gut feeling says that the Timer Object will not survive.. Just
want to confirm that.
I will be interested to know If there are any techiniques that can make
the usage of Timer and TimeTask classes in EJB's possible as well as reliable with minmum impact on over all performance.Have a look at J2EE 1.4. I think they add a timer service for EJBs there...
Kai -
Where do I put classes shared between EJBs and WAR
I have written some ValueObject classes stored in their own jar, they are used by a number of ejbs and and a Web application WAR. I have packaged the thing up as a single EAR but neither the EJBs or the jsps can see these classes.
How do I share these classes at each end. is their a general deployment descriptor solution or is it application server specific.
I am deploying to IBM Websphere 6verify .classpath file under your web folder for both options
Sorry, what do you mean is their a classpath value in the xml descriptors. I put my ValueObject into a jar within the WEB-INF\lib of the WAR but these arent seen by the EJBs which are within the EAR but not the WAR. Im not aware that there is a seperate WEB-INF directory for the EAR.
Structure as follows
app.ear
testejb.jar
META-INF
testweb.war
test.jsp
META-INF
WEB_INF
classes
testui.class
lib
valueobjects.jar -
Class/member variables usage in servlets and/or helper classes
I just started on a new dev team and I saw in some of their code where the HttpSession is stored as a class/member variable of a servlet helper class, and I was not sure if this was ok to do or not? Will there be problems when multiple users are accessing the same code?
To give some more detail, we are using WebLogic and using their Controller (.jpf) files as our servlet/action. Several helper files were created for the Controller file. In the Controller, the helper file (MyHelper.java) is instantiated, and then has a method invoked on it. One of the parameters to the method of the helper class is the HttpServletRequest object. In the method of the helper file, the very first line gets the session from the request object and assigns it to a class variable. Is this ok? If so, would it be better to pass in the instance of the HttpServletRequest object as a parameter to the constructor, which would set the class variable, or does it even matter? The class variable holding the session is used in several other methods, which are all invoked from the method that was invoked from the Controller.
In the Controller file:
MyHelper help = new MyHelper();
help.doIt(request);MyHelper.java
public class MyHelper {
private HttpSession session;
public void doIt(HttpServletRequest request) {
session = request.getSession();
String temp = test();
private String test() {
String s = session.getAttribute("test");
return s;
}In the past when I have coded servlets, I just passed the request and/or session around to the other methods or classes that may have needed it. However, maybe I did not need to do that. I want to know if what is being done above will have any issues with the data getting "crossed" between users or anything of that sort.
If anyone has any thoughts/comments/ideas about this I would greatly appreciate it.No thoughts from anyone?
-
Hello, I am and IIN Intitute of Integrative Nutrition in New York student. My iPAD 2 is part of my school material and was uploaded with all Videos and Audio classes for the whole program. I recently typed in my passwork incorrectly and disabled my iPad it is giving me the message " connect to i-tunes". I am afraid to loose my lectures. Could anyone help me with some information please? Thank you very much. Wouga22
If you do not have a backup you are going to lose everything on your iPad and even if you do have one, you may still be out of luck.
You have to restore the device within iTunes. You want to use the same computer that you always sync with so that you can restore your app data and settings. You can restore with any other computer, but you will lose everything on the iPad.
Read this very carefully before you proceed. Sometimes iTunes will allow you to restore the iPad without having to use recovery mode, but if you need to use recovery mode and don't have a backup, that is where you may have a problem.
http://support.apple.com/kb/ht1212
If you need recovery mode ....
Recovery Mode Instructions
Disconnect the USB cable from the iPad, but leave the other end of the cable connected to your computer's USB port.
Turn off iPad: Press and hold the Sleep/Wake button for a few seconds until the red slider appears, then slide the slider. Wait for iPad to turn off.
If you cannot turn off iPad using the slider, press and hold the Sleep/Wake and Home buttons at the same time. When the iPad turns off, release the Sleep/Wake and Home buttons.
While pressing and holding the Home button, reconnect the USB cable to iPad. When you reconnect the USB cable, iPad should power on.
Continue holding the Home button until you see the "Connect to iTunes" screen. When this screen appears you can release the Home button.
If necessary, open iTunes. You should see the recovery mode alert that iTunes has detected an iPad in recovery mode.
Use iTunes to restore iPad. -
Help with EJB and JNDI, please
Hello. My name is Santiago, and i am a student from the University of Valladolid, in Spain. I am newcome in the world of EJB, I have done the first EJB from de Sun tutorial (I�m using the Sun Java System Application Server PE 8.2) and now I am trying to improve it in that way: I have the EJB and the client in diferent machines conected.
I am trying to understand how to use JNDI, but i have not good results :( I have read about using ldap but i dont know if it is apropiated, or if it is installed automaticaly with the sun aplication, or if i have to download and install it... i am not sure about anything :)
This is my client�s code (part of it)
Hashtable envirom = new Hashtable();
envirom.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
envirom.put("java.naming.factory.url.pkgs","com.sun.enterprise.naming");
envirom.put(Context.PROVIDER_URL,"iiop://Santiago:389");
envirom.put(Context.PROVIDER_URL,"ldap://192.168.1.101:389");
envirom.put(Context.SECURITY_AUTHENTICATION,"none");
InitialContext ctx = new InitialContext(envirom);
Object objref = ctx.lookup("java:comp/env/ejb/Multiplica");
When I try to connect in local mode (client and EJB in the same machine) i get something like that:
javax.naming.CommunicationException: 192.168.1.101:389 [Root exception is java.n
et.ConnectException: Connection refused: connect]
at com.sun.jndi.ldap.Connection.<init>(Connection.java:204)
at com.sun.jndi.ldap.LdapClient.<init>(LdapClient.java:118)
at com.sun.jndi.ldap.LdapClient.getInstance(LdapClient.java:1578)
at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2596)
at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:283)
It is even worse when i try it in different machines:
10-mar-2006... com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImp1<init>
ADVERTENCIA: "IOP00410201: <COMM_FAILURE> Fallo de conexion: Tipo de socket: IIOP_CLEAR_TEXT;
name of host: portatil; puerto: 3700"
org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code:201 completed:No
Both SSOO are XP and I have disabled Firewalls.
PLEASE, if you colud help me It would fantastic, because I am in that trouble, i have tryed 1000 solutions but i am not able to understand it.
Hoping you can help me.
Santiago.This thread is now being followed up in:
http://swforum.sun.com/jive/thread.jspa?threadID=64092
Maybe you are looking for
-
How to add Column field in the custom Query Link search page as a header
Hi, I have created a Query page link in web layout editor. Now, I want to customise the view of the result. I see an option to change the "Text1" and "text2", but how do I add other fields as a colum in the search result ? The only column I see by de
-
Mail messages disappear - just a blank mail message for all emails
Mail messages disappear - just a blank mail message for all emails. This happens sporadically since I upgraded to Yosemite 10.10.2. It happens on all of my machines (Macbook Air, + iMacs) so it must be a software bug. Is there an update coming throug
-
CRM_IC - SAPLTHFB "Raise_exception"
I need your help, my CRM_IC don't run send me this error, mi services are activate, but the page cannot displayed, please send me information about this. Thanks every body Alejandro Mexico City
-
I received an error for a webpage i entered, how can i fix it so i can log in again
hi, i received a error message in my computer, because i did something wrong, and i want to log in to the web page again but i cant. how can i fix it
-
How to install FX5700 LE ?
I bought a MSI FX5700LE and i downloaded the latest version of driver (61.77) so when i run the setup file it notified me that the software that i'm installing has NOT PASSED WINDOWS LOGO Testing. If continue installing may cause system impair or de