Benamin,
Strange...
If you are using ServiceMix 3.1 or above, every JAR file that is in the
lib/ folder of your SU should have been added to the classpath
automatically (look at
http://incubator.apache.org/servicemix/classloaders.html, "New in
ServiceMix 3.1")
Gert
Benamin wrote:
Ok, I finally figured this out. For SU's you place classpath entries into
xbean.xml rather than jbi.xml. Suppose for instance I have referenced a
third-party jar called MyJar.jar in a jsr 181 SU. The xbean needs to have
an entry such as
<classpath>
<location>lib/MyJar.jar</location>
</classpath>
Then, if you look in the zip file created by an mvn install, your lib dir
should have that jar in it. It places it in there, because you specified a
dependency on it in the pom.xml such as:
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>Myjar</artifactId>
<version>1.0</version>
</dependency>
The xbean takes the path relative of the SU, so lib is the only part of the
path you need to specify in the xbean classpath entry.
Benamin wrote:
Since it doesn't seem like classpath can be changed for an SU, would it
make sense to try to change the classpath within the code for the jsr181
SU I am deploying?
Benamin wrote:
I put the 1.4 in the dependency section, so I guess it automatically adds
that to the file name when it creates the lib directory.
At the moment I am looking at Sun's website for adding classpath to
jbi.xml. It has examples for adding classpath for jbi components but not
for SU's.
http://java.sun.com/integration/pa1/docs/dev_guide/appendix_a.html
Gert Vanthienen wrote:
L.S.,
Which version of jaxrpc did you specify as a dependency in the pom.xml
file? Where do you see this jaxrpc.jar (without the version number)?
Gert
Benamin wrote:
Yes, the jar is there. I do notice the name is slightly different. It
includes the version of the jar within the name like jaxrpc.jar has
become
jaxrpc-1.4.jar.
Gert Vanthienen wrote:
Benamin,
Can you check if the resulting SU archive contains a lib directory
with
the required JAR in there? Normally, if you add a dependency to a SU
pom.xml file, it is copied to the target/xxx-...-installer/lib
directory
to be packaged with the SU.
Gert
Benamin wrote:
I'm building both a JBI component and a Service Unit. I have now
figured
out
how to get ServiceMix to recognize the jars in the JBI component (for
others
that are having this problem, see my next post for solution), but I
am
still
having problems with the Service Unit.
I am building a Service Unit based on a JSR 181 component. The third
party
jar I am adding is for Web Service support. I added jaxrpc.jar to
the
dependency section of the pom, so that it would build correctly, but
at
runtime I get the no class def found error for one of the classes in
jaxrpc.jar. The version of ServiceMix is 3.1. Thanks.
Gert Vanthienen wrote:
L.S.,
Some additional questions...
- Are you building a service unit or a JBI component?
- What version of ServiceMix are you using?
- Can you give an example of a third party jar that causes you the
problem?
Gert
Benamin wrote:
I can build ServiceMix components with third party jars, but I get
errors
at
runtime, such as no class found errors. It appears the jars do get
packaged
within the zip file that ServiceMix creates in the target
directory. If
I
put the jars into the $SERVICEMIX_HOME/lib dir manually, it works,
I
don't
get the NO class found errors.
Why does SMIX seem to ignore the jars it packages in the .zip file?