Skip to main content

Runnging application client as web start

10 replies [Last post]
haleh
Offline
Joined: 2012-09-14
Points: 0

Hi,

Please help why I get this error while I launch my application client as web start.

application works fine with command line appclient -client myapplicationclient.jar
but when I launch it as web I get Run time error. Seems that application client can not access remote Ejb. Could you please help this issue if I have to do some settings?

java.lang.RuntimeException: Error launching or running the application
at org.glassfish.appclient.client.JWSAppClientContainerMain.main(JWSAppClientContainerMain.java:144)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javaws.Launcher.executeApplication(Unknown Source)
at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at org.glassfish.appclient.client.JWSAppClientContainerMain$ClientRunner.run(JWSAppClientContainerMain.java:179)
at org.glassfish.appclient.client.JWSAppClientContainerMain.main(JWSAppClientContainerMain.java:138)
... 9 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.glassfish.appclient.client.acc.AppClientContainer.launch(AppClientContainer.java:438)
at org.glassfish.appclient.client.AppClientFacade.launch(AppClientFacade.java:182)
at org.glassfish.appclient.client.JWSAppClientContainerMain$ClientRunner.run(JWSAppClientContainerMain.java:169)
... 10 more
Caused by: javax.naming.NamingException: Lookup failed for 'java:global/myEAR1/myEAR1-ejb/myServices!mypackage.myServicesRemote' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NamingException: ejb ref resolution error for remote business interface mypackage.myServicesRemote [Root exception is sun.misc.InvalidJarIndexException: Invalid index]]
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
at javax.naming.InitialContext.lookup(Unknown Source)
at mymainpackage.myclass.main(myclass.java:52)
... 17 more
Caused by: javax.naming.NamingException: ejb ref resolution error for remote business interface mypackage.myServicesRemote [Root exception is sun.misc.InvalidJarIndexException: Invalid index]
at com.sun.ejb.EJBUtils.lookupRemote30BusinessObject(EJBUtils.java:433)
at com.sun.ejb.containers.RemoteBusinessObjectFactory.getObjectInstance(RemoteBusinessObjectFactory.java:75)
at javax.naming.spi.NamingManager.getObjectInstance(Unknown Source)
at com.sun.enterprise.naming.impl.SerialContext.getObjectInstance(SerialContext.java:556)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:514)
... 20 more
Caused by: sun.misc.InvalidJarIndexException: Invalid index
at com.sun.deploy.security.DeployURLClassPath$JarLoader.getResource(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$JarLoader.getResource(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath.getResource(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.glassfish.appclient.client.MaskingClassLoader.loadClass(MaskingClassLoader.java:95)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at com.sun.ejb.EJBUtils.getBusinessIntfClassLoader(EJBUtils.java:687)
at com.sun.ejb.EJBUtils.loadGeneratedRemoteBusinessClasses(EJBUtils.java:462)
at com.sun.ejb.EJBUtils.lookupRemote30BusinessObject(EJBUtils.java:413)
... 24 more

Thanks,
h.

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
tjquinn
Offline
Joined: 2005-03-30
Points: 0

What release of GlassFish are you using?

What exact version of Java are you running?

There is some problem as Java Web Start's class loader tries to locate a resource in one of the JARs. Unfortunately the error message does not tell which JAR has the problem.

You could try to clear the Java Web Start cache of your app and all the GlassFish system files. When you relaunch your app Java Web Start will have to download all the GlassFish system files again, which as you know takes some time, but if the app works then it will be worth it.

To clear the cache, run

javaws -viewer

Things are a little different from one OS to the next, but you should be able to see a window listing all the downloaded applications. (There will be a drop-list near the upper left that will say Applications.) Find the entry in the list for your app, select it, then click the red X (to delete it). Then change the drop-list to Resources. You can sort by the URL list, and select all the GlassFish files and click the red X.

Then try launching your app again.

- Tim

haleh
Offline
Joined: 2012-09-14
Points: 0

Hi Tim,

Thanks for your reply.

We are using Glassfish on unix machine
GlassFish Server Open Source Edition 3.1.2.2 (build 5)
Also our development environment is Netbeans and on the client the java platform is jdk 1.6

I cleaned up the cache and all resource nothing is changed ... seems that client can not reach the remote ejb one important note I will describe you after error stack please read also below

java.lang.RuntimeException: Error launching or running the application
at org.glassfish.appclient.client.JWSAppClientContainerMain.main(JWSAppClientContainerMain.java:144)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javaws.Launcher.executeApplication(Unknown Source)
at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at org.glassfish.appclient.client.JWSAppClientContainerMain$ClientRunner.run(JWSAppClientContainerMain.java:179)
at org.glassfish.appclient.client.JWSAppClientContainerMain.main(JWSAppClientContainerMain.java:138)
... 9 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.glassfish.appclient.client.acc.AppClientContainer.launch(AppClientContainer.java:438)
at org.glassfish.appclient.client.AppClientFacade.launch(AppClientFacade.java:182)
at org.glassfish.appclient.client.JWSAppClientContainerMain$ClientRunner.run(JWSAppClientContainerMain.java:169)
... 10 more
Caused by: javax.naming.NamingException: Lookup failed for 'java:global/EnterpriseApplication2/EnterpriseApplication2-ejb/NewSessionBean' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NamingException: ejb ref resolution error for remote business interfacesession.NewSessionBeanRemote [Root exception is java.lang.ClassNotFoundException: session.NewSessionBeanRemote]]
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
at javax.naming.InitialContext.lookup(Unknown Source)
at javaapplication14.JavaApplication14.main(JavaApplication14.java:49)
... 17 more
Caused by: javax.naming.NamingException: ejb ref resolution error for remote business interfacesession.NewSessionBeanRemote [Root exception is java.lang.ClassNotFoundException: session.NewSessionBeanRemote]
at com.sun.ejb.EJBUtils.lookupRemote30BusinessObject(EJBUtils.java:433)
at com.sun.ejb.containers.RemoteBusinessObjectFactory.getObjectInstance(RemoteBusinessObjectFactory.java:75)
at javax.naming.spi.NamingManager.getObjectInstance(Unknown Source)
at com.sun.enterprise.naming.impl.SerialContext.getObjectInstance(SerialContext.java:556)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:514)
... 20 more
Caused by: java.lang.ClassNotFoundException: session.NewSessionBeanRemote
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at org.glassfish.appclient.client.acc.ACCClassLoader.findClassUnshadowed(ACCClassLoader.java:235)
at org.glassfish.appclient.client.acc.ACCClassLoader.findClass(ACCClassLoader.java:215)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at com.sun.ejb.EJBUtils.getBusinessIntfClassLoader(EJBUtils.java:687)
at com.sun.ejb.EJBUtils.loadGeneratedRemoteBusinessClasses(EJBUtils.java:462)
at com.sun.ejb.EJBUtils.lookupRemote30BusinessObject(EJBUtils.java:413)
... 24 more

Another point is that now even when I try to run with appclient -client command this also even doesnot run although it worked before I get error
What is cause of this error do you have any explanation for this one?

Exception in thread "main" java.lang.NoClassDefFoundError: org/glassfish/appclient/client/acc/UserError
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(Unknown Source)
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.glassfish.appclient.client.acc.UserError
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 6 more

Thanks,
h.

tjquinn
Offline
Joined: 2005-03-30
Points: 0

Actually, I think you are making progress.

The "invalid index" error is gone from the Java Web Start launch, replaced by the inability to find session.NewSessionBeanRemote. I noticed that this is a different class from the one in the first stack traces you posted, so I guess this is a new application you are testing with.

The inability to find session.NewSessionBeanRemote could happen if your application is packaged in a way so that session.NewSessionBeanRemote is not accessible to the app client module. The JAR containing that interface must be in the library directory in the EAR (/lib by default) or the app client JAR's manifest Class-Path must refer explicitly to the JAR which contains the remote interface.

The inability to find UserError looks like you might be trying to launch a JAR other than the generated one downloaded during "deploy --retrieve" or after "get-client-stubs." The UserError class is in the gf-client.jar, so I'm very surprised it can't be found using the appclient command. I cannot explain that one.

- Tim

haleh
Offline
Joined: 2012-09-14
Points: 0

Hi Tim,

Thanks for your response.
I hope you have an answer for me as things are getting more unclear to me.
So I describe my situation.
My application is now running with command line appclient -client...
The problem was that I remove the gf-client.jar library from netbeans development environment from my project libraries and recompile my application
and running with appclient command line and works fine.

Now my problem is running my client as web start.
First I explain you what steps I did and please correct me if I am doing something wrong.

-I compiled application client. The libary gf-client.jar is not in my build path. Because My application is working in this way as I run it
with appclient commad line.
-I go to glassfish administration console and node applications click on button deploy and I upload the application client .jar file and
from drop list I select application client and java web start check box is already checked and click on ok.
In this way I deploy my application client which I am not sure if it is the right way.
-When I go to glassfish folder on our unix machine
I see the client application on domain1 folder but when I open it I donot find the the .jar file and I found only .class file.
Also the Manifest.MF file do not address the gf-client.jar file which is correct because I already remove it from build path.
Aso I see that there is new folder created
../glassfish/glassfish/domains/domain1/java-web-start/___system/s1as/glassfish/lib which I have my gf-client.jar file there.

So I try to launch the application client from adminstration console I get an error. I have my ejb remote interface on class path.
Have no idea why client can not reach to my remote beans. Although everything works with appclient command line. What I am doing wrong??
By the way the error is different than previous one. I do not get any invalid index error maybe because I remove gf-client.jar file from build path
in my development environment (netbeans).
I appreciate if you look at once again to error stack.

java.lang.RuntimeException: Error launching or running the application
at org.glassfish.appclient.client.JWSAppClientContainerMain.main(JWSAppClientContainerMain.java:144)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javaws.Launcher.executeApplication(Unknown Source)
at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at org.glassfish.appclient.client.JWSAppClientContainerMain$ClientRunner.run(JWSAppClientContainerMain.java:179)
at org.glassfish.appclient.client.JWSAppClientContainerMain.main(JWSAppClientContainerMain.java:138)
... 9 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.glassfish.appclient.client.acc.AppClientContainer.launch(AppClientContainer.java:438)
at org.glassfish.appclient.client.AppClientFacade.launch(AppClientFacade.java:182)
at org.glassfish.appclient.client.JWSAppClientContainerMain$ClientRunner.run(JWSAppClientContainerMain.java:169)
... 10 more
Caused by: javax.naming.NamingException: Lookup failed for 'java:global/EnterpriseApplication2/EnterpriseApplication2-ejb/NewSessionBean' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NamingException: ejb ref resolution error for remote business interfacesession.NewSessionBeanRemote [Root exception is java.lang.ClassNotFoundException: session.NewSessionBeanRemote]]
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
at javax.naming.InitialContext.lookup(Unknown Source)
at javaapplication14.JavaApplication14.main(JavaApplication14.java:56)
... 17 more
Caused by: javax.naming.NamingException: ejb ref resolution error for remote business interfacesession.NewSessionBeanRemote [Root exception is java.lang.ClassNotFoundException: session.NewSessionBeanRemote]
at com.sun.ejb.EJBUtils.lookupRemote30BusinessObject(EJBUtils.java:433)
at com.sun.ejb.containers.RemoteBusinessObjectFactory.getObjectInstance(RemoteBusinessObjectFactory.java:75)
at javax.naming.spi.NamingManager.getObjectInstance(Unknown Source)
at com.sun.enterprise.naming.impl.SerialContext.getObjectInstance(SerialContext.java:556)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:514)
... 20 more
Caused by: java.lang.ClassNotFoundException: session.NewSessionBeanRemote
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at org.glassfish.appclient.client.acc.ACCClassLoader.findClassUnshadowed(ACCClassLoader.java:235)
at org.glassfish.appclient.client.acc.ACCClassLoader.findClass(ACCClassLoader.java:215)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at com.sun.ejb.EJBUtils.getBusinessIntfClassLoader(EJBUtils.java:687)
at com.sun.ejb.EJBUtils.loadGeneratedRemoteBusinessClasses(EJBUtils.java:462)
at com.sun.ejb.EJBUtils.lookupRemote30BusinessObject(EJBUtils.java:413)
... 24 more

tjquinn
Offline
Joined: 2005-03-30
Points: 0

I am still not completely clear about exactly how you have built the parts of your application. Here is one way that will work. It is slightly more complicated than some people might expect but this is, in my opinion, the best design.

Build your application as an EAR, containing three parts: a library containing the EJB remote interface, the EJB module, and the app client module. These will be three different projects in NetBeans. Use NetBeans to add the library project as a library to both the EJB project and the app client project. Do NOT have NetBeans package the library inside the EJB or the app client module. (There is a check box next to each library name in the libraries list for the module.)

Use NetBeans to build the EAR. If you have set up the EAR to contain the EJB and app client modules then NetBeans will automatically build those first and then include their JARs into the EAR.

Now deploy the EAR to GlassFish. Use either "deploy --retrieve" or "get-client-stubs" and then use the appclient command to convince yourself that the resulting app client package works correctly.

Then launch the client using Java Web Start. GlassFish will know that the app client depends on the library JAR and will make it available as part of the Java Web Start launch and the launch should work correctly.

Let us know how it turns out.

Some people ask why I suggest using the library JAR. The answer is this: From a design point of view, the app client should depend ONLY on the EJB remote interface(s) and should not depend on or have access to the EJB implementation classes. By placing the remote interface into a library that is separate from the EJB module itself, the app client does not have to depend on the EJB module and therefore does not have access to the EJB implementation classes at compile-time or at runtime. It is a little more complicated because we have the additional library and both the app client module and the EJB module depend on that library, but to my mind that is still a cleaner design.

- Tim

haleh
Offline
Joined: 2012-09-14
Points: 0

Hi Tim,

Thank you very much for your response.

I am using the same application architecture. The only difference is that I do not have my standalone client in EAR. I do have only my Ejb module in EAR project. I have my ejb remote interface library in my client and in my Ejb module.
So I have 4 projects myEAR, myEjbmodule, myEjbRemote, myclient
The first Step
I deploy my EAR to glassfish
and run my standalone client with appclient command line. This works perfect. Client and my remote bean communicating with each other.
Next step
Then I deploy my standalone client to my server any try to launch client as web start at this point client can not recognize remote bean.
So if you say that solution client and ejb module both in one EAR will work. I will try and let you know.
Thanks alot.
h.

tjquinn
Offline
Joined: 2005-03-30
Points: 0

Thanks for describing your design. Our goal is that anything that works using appclient should work unchanged using Java Web Start. Obviously this is not the case for you, so we will look into that on this end. But in the meantime using an EAR that contains everything should work - I have a set of NetBeans projects set up precisely that way and Java Web Start works for that just fine.

I will be eager to hear how it works for you.

- Tim

haleh
Offline
Joined: 2012-09-14
Points: 0

Hi Tim,

Thanks for all explanation. Finally works perfectly based on your suggestion. :-)
I've always concerned about putting client module in EAR and still I am not sure that when I put my client in EAR doesn't
it mean that each client loads user interface from the server?
another point when I add library (my RemoteEJB interface) in client module and in my ejb module in which module should I check the package flag on?
if I do not check this flag in both then I am not able to deploy my EAR
I got error
Invalid ejb jar [EnterpriseApplication5-ejb.jar]:
it contains zero ejb. Note: 1. A valid ejb jar requires at least one session, entity (1.x/2.x style),
or message-driven bean. 2. EJB3+ entity beans (@Entity) are POJOs and please package them as library jar. 3.
If the jar file contains valid EJBs which are annotated with EJB component level annotations (@Stateless, @Stateful, @MessageDriven, @Singleton), please check server.log to see whether the annotations were processed properly
I believe that these will be server component and must be packaged with ejb module. Is it right?

and the last point is that I have entities as POJOs(simple java classes) which I use it in my client code and server code(ejb module).
I add these classes as Library in class path. Should this jar files also packaged with ejb module or with client module?

Thanks again for your big big help.
h.

tjquinn
Offline
Joined: 2005-03-30
Points: 0

I'm glad to hear you have it working!

About placing the app client module in an EAR... If you package the app client in the EAR then you do need to get the correct JAR files onto the client system, but only once. You can do this manually when you deploy the EAR ("asadmin deploy --retrieve localDir ...") or after you deploy the EAR ("asadmin get-client-stubs ..."). Then you can use the appclient command on the client. Running the client uses the JARs on the remote system - it does NOT retrieve any files from the server at runtime. Of course, if you deploy a new version of the EAR with different code in the client then you need to get the new client files to the remote client system again.

As you know you can have the files delivered to the client system automatically for you if you launch the client using Java Web Start. One advantage is that Java Web Start will download any files that are newer on the server automatically; the end user does not need to worry about that. Plus, Java Web Start does not download any file that has not changed. This gives the best of both worlds: Java Web Start makes sure the client files are up-to-date but does not copy any file that is already current.

About packaging... In my example in NetBeans I added the library project to the EAR project as a library. Then in the Build->Packaging part of the EAR project's properties I told NetBeans to package the library in the /lib directory. The Java EE spec requires all JARs there to be accessible to all modules (the EJB and the app client modules in our example) so that makes the library JAR available to both at runtime. We still need to add the library project as a library to the separate EJB NetBeans project and the app client NetBeans project so they will compile correctly, but we DO NOT want NetBeans to package that library with either of those modules directly because we have packaged it into the EAR.

I am not sure, but I think the warning you got during deployment might have been because the library JAR was being processed as part of the EJB module because you had packaged the library with the EJB module. There are no EJBs in the library JAR so that might be why GlassFish reported the warning.

You can make the POJO classes available to both modules by including them in the same library that contains the EJB remote interface or by placing them in a different library, whichever makes more sense to you. In the second case, make sure to add the second library also as a library to the EJB and the app client modules (for compiling but NOT for packaging) and then add the second library as a library to the EAR also and tell NetBeans to put it also in the /lib directory of the EAR. As with the first library, GlassFish will then make the second library available to all modules in the EAR.

Ideally, you want each class in exactly one JAR and accessible to only those modules that really need to use it. Splitting the classes up as I described takes a little more work but it's a good design.

Let us know if we can be of more help. Best of luck in your further use of GlassFish!

- Tim

haleh
Offline
Joined: 2012-09-14
Points: 0

Hi Tim,

Just want to say thank you once again for great hints.
We had an application on Eclipse-Jboss and now we moved it on Netbeans-Glassfish and seems it is working very good.
We are going to roll it out live in some weeks.
I appriciate you and maybe will be back to you in a case of any problems.

Cheers,
h.