I am trying to evaluate what it would take to move an existing app from 
WebLogic 8.1 to JBoss.

I am trying to get our app to initialize, and it's failing with FileNotFound 
exceptions when trying to read property files stored in the EAR.

I've distilled things down to a very simple example to illustrate the problem.

I started with a very simple EAR that implemented a stateless session bean.  My 
EJB deploys, and I wrote a simple client app that sucessfully calls it.  So all 
of the deployment descriptors and InitialContext stuff works.  I actually used 
the MyEclipse plugin to create this enterprise project and deploy this to both 
JBoss and WL.

Now,  I need the path to a properties file (because as I scale this up, I need 
that file name to initialize a Quartz StdSchedulerFactory).  I took code from 
our WebLogic deployed EJB and tried it in JBoss, but I get the FileNotFound 
exceptions I described above.

Thing is, they go away if I deploy my EAR as an exploded EAR.  This won't fly 
for real, I want to deploy packaged.

Anyways - here what I get:

For an EAR packaged like so:

C:\jboss-4.0.2\server\default\deploy>jar xvf AdviceEAR.ear
extracted: advice.jar
extracted: APP-INF/classes/dao.properties
extracted: META-INF/MANIFEST.MF
extracted: META-INF/application.xml

This code works if deployed as an exploded EAR:


  |     public String getAdvice() {
  |             System.out.println("in getAdvice");
  |             
  |             InputStream daoProperties = 
getClass().getClassLoader().getResourceAsStream("APP-INF/classes/dao.properties");
  |         Properties properties = new Properties();
  |         try {
  |             properties.load(daoProperties);
  |             if (properties != null) {
  |                     for (Iterator it = properties.entrySet().iterator(); 
it.hasNext();) {
  |                             Map.Entry entry = (Map.Entry) it.next();
  |                             String value = null;
  |                             String key = null;
  |                             try {
  |                                     key = (String) entry.getKey();
  |                                     value = (String) entry.getValue();
  |                             } catch (Throwable e) {
  |                                     System.out.println("Invalid dao 
property for key [" + key + ", " + entry.getValue() + "] " + e);
  |                             }
  |                             
  |                             System.out.println("Key: " + key + " Value: " 
+value);
  |                     }
  |             }   
  | 
  |         } catch (Throwable e) {
  |             System.out.println("Failed to load dao properties file");
  |         }
  | 
  |         URL daoPropsURL = 
getClass().getClassLoader().getResource("APP-INF/classes/dao.properties");
  |         
  |         if (daoPropsURL != null) {
  |             String daoPropsPath = daoPropsURL.getPath();
  |             
  |             if (daoPropsPath != null) {
  |                     System.out.println("daoPropsPath is " + daoPropsPath);
  |             }
  |             else {
  |                     System.out.println("daoPropsPath is null!");
  |             }
  |             
  |             String daoPropsFile = daoPropsURL.getFile();
  |             
  |             if (daoPropsFile != null) {
  |                     System.out.println("daoPropsFile is " + daoPropsFile);
  |             }
  |             else {
  |                     System.out.println("daoPropsFile is null!");
  |             }
  | 
  |         }
  |         else {
  |             System.out.println("daoPropsURL is null");
  |         }
  |         
  |         
  |         Properties urlProperties = new Properties();
  |         try {
  |             FileInputStream is = new FileInputStream(daoPropsURL.getFile());
  |             urlProperties.load(is);
  |         } catch (Throwable e) {
  |             System.out.println("Failed to load dao properties file: " + 
e.getMessage());
  |         }
  |         
  |         if (urlProperties != null) {
  |             for (Iterator it = urlProperties.entrySet().iterator(); 
it.hasNext();) {
  |                     Map.Entry entry = (Map.Entry) it.next();
  |                     String value = null;
  |                     String key = null;
  |                     try {
  |                             key = (String) entry.getKey();
  |                             value = (String) entry.getValue();
  |                     } catch (Throwable e) {
  |                             System.out.println("Invalid dao property for 
key [" + key + ", " + entry.getValue() + "] " + e);
  |                     }
  |                     
  |                     System.out.println("Key: " + key + " Value: " +value);
  |             }
  | 
  |         }   
  |             int random = (int) (Math.random() * adviceStrings.length);
  |             return adviceStrings[random];
  |     }
  | 

The result:


  | 16:41:55,878 INFO  [STDOUT] in getAdvice
  | 16:41:55,898 INFO  [STDOUT] Key: property4 Value: D
  | 16:41:55,898 INFO  [STDOUT] Key: property3 Value: C
  | 16:41:55,898 INFO  [STDOUT] Key: property2 Value: B
  | 16:41:55,898 INFO  [STDOUT] Key: property1 Value: A
  | 16:41:55,898 INFO  [STDOUT] daoPropsPath is 
/C:/jboss-4.0.2/server/default/deploy/AdviceEAR.ear/APP-INF/classes/dao.properties
  | 16:41:55,898 INFO  [STDOUT] daoPropsFile is 
/C:/jboss-4.0.2/server/default/deploy/AdviceEAR.ear/APP-INF/classes/dao.properties
  | 16:41:55,898 INFO  [STDOUT] Key: property4 Value: D
  | 16:41:55,908 INFO  [STDOUT] Key: property3 Value: C
  | 16:41:55,908 INFO  [STDOUT] Key: property2 Value: B
  | 16:41:55,908 INFO  [STDOUT] Key: property1 Value: A
  | 

But deployed as a packaged app, I get:


  | 16:42:50,626 INFO  [STDOUT] in getAdvice
  | 16:42:50,626 INFO  [STDOUT] Key: property4 Value: D
  | 16:42:50,626 INFO  [STDOUT] Key: property3 Value: C
  | 16:42:50,626 INFO  [STDOUT] Key: property2 Value: B
  | 16:42:50,626 INFO  [STDOUT] Key: property1 Value: A
  | 16:42:50,626 INFO  [STDOUT] daoPropsPath is 
file:/C:/jboss-4.0.2/server/default/tmp/deploy/tmp29671AdviceEAR.ear!/APP-INF/classes/dao.properties
  | 16:42:50,626 INFO  [STDOUT] daoPropsFile is 
file:/C:/jboss-4.0.2/server/default/tmp/deploy/tmp29671AdviceEAR.ear!/APP-INF/classes/dao.properties
  | 16:42:50,646 INFO  [STDOUT] Failed to load dao properties file: 
file:\C:\jboss-4.0.2\server\default\tmp\deploy\tmp29671AdviceEAR.ear!\APP-INF\classes\dao.properties
 (The filename, directory name, or volume label syntax is incorrect)
  | 

Why?  It works fine both ways in WebLogic.  That exclamation point in the path 
and file name when calling getResource() obviously look suspicious. What am I 
doing wrong?


          



View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3937008#3937008

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3937008


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to