It looks like you are using the ocm namespace in your mapping definition.
You have to register it. Here is a code example :
public static final String OCM_NAMESPACE_PREFIX = "ocm";
public static final String OCM_NAMESPACE = "
http://jackrabbit.apache.org/ocm";
String[] jcrNamespaces =
session.getWorkspace().getNamespaceRegistry().getPrefixes();
boolean createNamespace = true;
for (int i = 0; i < jcrNamespaces.length; i++)
{
if (jcrNamespaces[i].equals(OCM_NAMESPACE_PREFIX))
{
createNamespace = false;
log.debug("Jackrabbit OCM namespace exists.");
}
}
if (createNamespace)
{
session.getWorkspace().getNamespaceRegistry().registerNamespace(OCM_NAMESPACE_PREFIX,
OCM_NAMESPACE);
log.info("Successfully created Jackrabbit OCM namespace.");
}
br,
Christophe
2009/3/3 Fernando Cabredo <[email protected]>
> Yes, I was able to fix the previous problem by adding the required jar
> files. However, this time I had a new error which is listed below:
>
> Exception in thread "main"
> org.apache.jackrabbit.ocm.exception.ObjectContentManagerException: Cannot
> create new node of type nt:unstructured from mapped class class
> com.daraga.jackrabbit.model.Article; nested exception is
> javax.jcr.NamespaceException: ocm: is not a registered namespace prefix.
> javax.jcr.NamespaceException: ocm: is not a registered namespace prefix.
> at
> org.apache.jackrabbit.rmi.server.ServerObject.getRepositoryException(ServerObject.java:120)
> at
> org.apache.jackrabbit.rmi.server.ServerNode.addMixin(ServerNode.java:273)
> 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 sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
> at sun.rmi.transport.Transport$1.run(Unknown Source)
> at java.security.AccessController.doPrivileged(Native Method)
> at sun.rmi.transport.Transport.serviceCall(Unknown Source)
> at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
> at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown
> Source)
> at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown
> Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
> Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
> at
> sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown
> Source)
> at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
> at sun.rmi.server.UnicastRef.invoke(Unknown Source)
> at org.apache.jackrabbit.rmi.server.ServerNode_Stub.addMixin(Unknown
> Source)
> at
> org.apache.jackrabbit.rmi.client.ClientNode.addMixin(ClientNode.java:373)
> at
> org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterImpl.insert(ObjectConverterImpl.java:206)
> at
> org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterImpl.insert(ObjectConverterImpl.java:146)
> at
> org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl.insert(ObjectContentManagerImpl.java:406)
> at com.daraga.jackrabbit.Main.main(Main.java:103)
>
>
> Thank you,
>
> Fernando T. Cabredo
>
>
>
>
> ________________________________
> From: Dave Brosius <[email protected]>
> To: [email protected]
> Sent: Tuesday, March 3, 2009 11:19:46 AM
> Subject: Re: NoClassDefFoundError on OCM Test
>
> Do you have a cglib.jar on your classpath?
>
> ----- Original Message -----
> From: "Fernando Cabredo" <[email protected]>
> To: <[email protected]>
> Sent: Monday, March 02, 2009 8:50 PM
> Subject: NoClassDefFoundError on OCM Test
>
>
> > Hi,
> >
> > I would like to get some help that is causing my OCM test.
> >
> > Here is the error:
> >
> > Exception in thread "main" java.lang.NoClassDefFoundError:
> > net/sf/cglib/proxy/Callback
> > at
> >
> org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl.<init>(ObjectContentManagerImpl.java:125)
> > at com.daraga.jackrabbit.Main.main(Main.java:97)
> > Caused by: java.lang.ClassNotFoundException: net.sf.cglib.proxy.Callback
> > 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 sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
> > at java.lang.ClassLoader.loadClass(Unknown Source)
> > at java.lang.ClassLoader.loadClassInternal(Unknown Source)
> > ... 2 more
> >
> > And my code are as follows:
> >
> > import java.net.MalformedURLException;
> > import java.util.ArrayList;
> > import java.util.Date;
> > import java.util.List;
> >
> > import javax.jcr.LoginException;
> > import javax.jcr.Repository;
> > import javax.jcr.Session;
> > import javax.jcr.SimpleCredentials;
> > import javax.servlet.ServletException;
> >
> > import org.apache.jackrabbit.ocm.exception.RepositoryException;
> > import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
> > import org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl;
> > import org.apache.jackrabbit.ocm.mapper.Mapper;
> > import
> > org.apache.jackrabbit.ocm.mapper.impl.annotation.AnnotationMapperImpl;
> > import com.daraga.jackrabbit.model.Article;
> > import com.daraga.jackrabbit.model.ArticlePhotos;
> > import com.daraga.jackrabbit.model.Author;
> > import com.daraga.jackrabbit.model.Category;
> > import com.daraga.jackrabbit.model.Photos;
> > import com.daraga.jackrabbit.model.Section;
> > import org.apache.jackrabbit.rmi.repository.URLRemoteRepository;
> >
> >
> > public class Main {
> > private static Session session;
> >
> > public String loginRepository (String repositoryUrl, String username,
> > String password){
> > String str;
> > System.out.println("<------------JackrabbitService---------->");
> > try {
> > SimpleCredentials cred = new SimpleCredentials(username,
> > password.toCharArray());
> > Repository repository = new
> URLRemoteRepository(repositoryUrl);
> > try {
> > session = repository.login(cred, null);
> > } catch (LoginException e) {
> > throw new ServletException(e);
> > } catch (RepositoryException e) {
> > throw new ServletException(e);
> > }
> > } catch (Exception e) {
> > e.toString();
> > // TODO: handle exception
> > }
> > try {
> > String user = session.getUserID();
> > str = "[Status]Login Successful[/Status]";
> > }finally{
> > //TODO on Login of user
> > }
> > return str;
> > }
> > public static void main(String[] args) {
> >
> > String repositoryUrl =
> > "http://localhost:8080/jackrabbit-webapp-1.5.2/rmi";
> > String username = "admin";
> > String password = "admin";
> > try {
> > SimpleCredentials cred = new SimpleCredentials(username,
> > password.toCharArray());
> > Repository repository = new
> URLRemoteRepository(repositoryUrl);
> > try {
> > session = repository.login(cred, null);
> > } catch (LoginException e) {
> > throw new ServletException(e);
> > } catch (RepositoryException e) {
> > throw new ServletException(e);
> > }
> > } catch (Exception e) {
> > e.toString();
> > }
> > String str;
> > try {
> > String user = session.getUserID();
> > System.out.println("str --->"+user);
> > str = "[Status]Login Successful[/Status]";
> > }finally{
> > //TODO on Login of user
> > }
> >
> > List<Class> myclasses = new ArrayList<Class>();
> >
> > myclasses.add(Article.class);
> >
> > myclasses.add(ArticlePhotos.class);
> > myclasses.add(Author.class);
> > myclasses.add(Category.class);
> > myclasses.add(Photos.class);
> > myclasses.add(Section.class);
> >
> >
> > Mapper mapper = new AnnotationMapperImpl(myclasses);
> > ObjectContentManager ocm = new ObjectContentManagerImpl(session,
> > mapper);
> >
> > Article article = new Article();
> > article.setPath("/articles");
> > article.setTitle("Public Announcement");
> > article.setContent("Urgently Needed");
> > article.setAuthorid(100);
> > article.setSectionid(1);
> > article.setDatecreated(new Date());
> > ocm.insert(article);
> > ocm.save();
> >
> > System.out.println("Retrieve a press release from the
> repository");
> > article = (Article) ocm.getObject("/articles");
> > System.out.println("Article title : " + article.getTitle());
> > }
> >
> > }
> >
> > Any help will be much appreciated.
> >
> > Fernando Cabredo
> >
> >
> >
>
>
>
>