Beiträge von endnic

    Okay...wenn diese innerhalb eines .jar liegt...leider kann ich das bei meinem Package nicht anwenden, da ich den Pfad zur xml nicht angeben kann. ;)


    Mir stellt sich die Frage, wozu ich im Designer eine eigen Javalib anlegen kann und zu dieser auch Resourcen mit anlegen kann, wenn auf diese dann nicht zugegriffen werden kann. :-?



    EDIT: Ja dann funktioniert es tadellos. Das is ja gerade das was mich wundert. komisch ist nur, dass der Designer aus meiner angelegten Javalib...LOKAL 3 .jar's erstellt.


    Code
    object.jar
    resource.jar
    source.jar


    object.jar beinhaltet die .class und source.jar die .java Dateien in der Package Structur meiner Javalib.


    In der resource.jar liegt meine xml.


    Wenn der Designer die 3 Dateien so auf den Domino Server überträgt, is ja klar wenn die xml nicht gefunden wird. Wie auch wenn sie in einer ganz anderen jar liegt.

    Wenn ich da arbeiten würde...wäre ich wohl eher derjenige der anderen mit Lotus-Problemen hilft... :lol:


    Naja...das mit den Packagenamen sollte jetz ja nicht das Problem darstellen, oder?


    Das ist ganz einfach zu erklären. Mir ging es beim 1 Post darum, auf zu zeigen, das eine Importierte Datei (sei es .properties, .xml etc) nicht innerhalb Notes zugreifbar ist. Da war es für mich einfacher einen stinknormalen FileInputStream zu nutzen als die sehr vile mehr komplexere JPA.


    Wenn ich dich damit in die Irre geführt haben sollte, bitte ich dies zu entschuldigen.

    Also die JVM-Version des Domino-Server ist 1.6.0


    Was ist den an dem Packagenamen ungewöhnlich?? Die heißen bei uns nunmal so... :-?


    Das einzige was jetzt evtl. noch releavant wäre sind die JPA Entity & controller Klassen:


    Code
    /** * * Controller Class for Entity WflProcess */public class WflProcessJpaController{    /**     * default Class Constructor     */    public WflProcessJpaController()    {        emf = Persistence.createEntityManagerFactory("XML_XSLTPU");    }    private EntityManagerFactory emf = null;    /**     *     * @return EntityManager     */    public EntityManager getEntityManager()    {        return emf.createEntityManager();    }    /**     * Write Object WflStyleSettings to Database     *     * @param wflProcess  Instance of Class WflProcess     */    public void create(WflProcess wflProcess)    {        EntityManager em = null;        try        {            em = getEntityManager();            em.getTransaction().begin();            em.persist(wflProcess);            em.getTransaction().commit();        } finally        {            if (em != null)            {                em.close();            }        }    }    /**     * Edit Record in Database     *     * @param wflProcess  Instance of Class WflProcess     * @throws NonexistentEntityException     * @throws Exception     */    public void edit(WflProcess wflProcess) throws NonexistentEntityException, Exception    {        EntityManager em = null;        try        {            em = getEntityManager();            em.getTransaction().begin();            wflProcess = em.merge(wflProcess);            em.getTransaction().commit();        } catch (Exception ex)        {            String msg = ex.getLocalizedMessage();            if (msg == null || msg.length() == 0)            {                Integer id = wflProcess.getWflId();                if (findWflProcess(id) == null)                {                    throw new NonexistentEntityException("The wflProcess with id " + id + " no longer exists.");                }            }            throw ex;        } finally        {            if (em != null)            {                em.close();            }        }    }    /**     * Delete Record in Database      *     * @param id  Primary Key in Database Table     * @throws NonexistentEntityException     */    public void destroy(Integer id) throws NonexistentEntityException    {        EntityManager em = null;        try        {            em = getEntityManager();            em.getTransaction().begin();            WflProcess wflProcess;            try            {                wflProcess = em.getReference(WflProcess.class, id);                wflProcess.getWflId();            } catch (EntityNotFoundException enfe)            {                throw new NonexistentEntityException("The wflProcess with id " + id + " no longer exists.", enfe);            }            em.remove(wflProcess);            em.getTransaction().commit();        } finally        {            if (em != null)            {                em.close();            }        }    }    /**     *     * @return List of WflStyleSetting Objects     */    public List<WflProcess> findWflProcessEntities()    {        return findWflProcessEntities(true, -1, -1);    }    /**     *     * @param maxResults  Maximum Results in List     * @param firstResult  Set first Result in List     * @return List of WflStyleSetting Objects     */    public List<WflProcess> findWflProcessEntities(int maxResults, int firstResult)    {        return findWflProcessEntities(false, maxResults, firstResult);    }    /**     * Is private Method     *     * @param maxResults  Maximum Results in List     * @param firstResult  Set first Result in List      * @return List of WflStyleSetting Objects     */    private List<WflProcess> findWflProcessEntities(boolean all, int maxResults, int firstResult)    {        EntityManager em = getEntityManager();        try        {            CriteriaQuery cq = em.getCriteriaBuilder().createQuery();            cq.select(cq.from(WflProcess.class));            Query q = em.createQuery(cq);            if (!all)            {                q.setMaxResults(maxResults);                q.setFirstResult(firstResult);            }            return q.getResultList();        } finally        {            em.close();        }    }    /**     *     * @param id  Primary Key of sought record     * @return WflStyleSetting Object     */    public WflProcess findWflProcess(Integer id)    {        EntityManager em = getEntityManager();        try        {            return em.find(WflProcess.class, id);        } finally        {            em.close();        }    }    /**     *     * @return Number of Records in Database     */    public int getWflProcessCount()    {        EntityManager em = getEntityManager();        try        {            CriteriaQuery cq = em.getCriteriaBuilder().createQuery();            Root<WflProcess> rt = cq.from(WflProcess.class);            cq.select(em.getCriteriaBuilder().count(rt));            Query q = em.createQuery(cq);            return ((Long) q.getSingleResult()).intValue();        } finally        {            em.close();        }    }}


    Die dazugehörige Entity:


    Code
    /** * * Entity Class for Database Table wfl_process */@Entity@Table(name = "wfl_process")@NamedQueries({    @NamedQuery(name = "WflProcess.findAll", query = "SELECT w FROM WflProcess w"),    @NamedQuery(name = "WflProcess.findAllActive", query = "SELECT w FROM WflProcess w WHERE w.wflStatus = 'Active'"),    @NamedQuery(name = "WflProcess.findByWflId", query = "SELECT w FROM WflProcess w WHERE w.wflId = :wflId"),    @NamedQuery(name = "WflProcess.findByWflProcessId", query = "SELECT w FROM WflProcess w WHERE w.wflProcessId = :wflProcessId"),    @NamedQuery(name = "WflProcess.findByWflProcessVersion", query = "SELECT w FROM WflProcess w WHERE w.wflProcessVersion = :wflProcessVersion"),    @NamedQuery(name = "WflProcess.findByWflTitle", query = "SELECT w FROM WflProcess w WHERE w.wflTitle = :wflTitle"),    @NamedQuery(name = "WflProcess.findByWflDescription", query = "SELECT w FROM WflProcess w WHERE w.wflDescription = :wflDescription"),    @NamedQuery(name = "WflProcess.findByWflAuthor", query = "SELECT w FROM WflProcess w WHERE w.wflAuthor = :wflAuthor"),    @NamedQuery(name = "WflProcess.findByWflDate", query = "SELECT w FROM WflProcess w WHERE w.wflDate = :wflDate"),    @NamedQuery(name = "WflProcess.findByWflChangeInfo", query = "SELECT w FROM WflProcess w WHERE w.wflChangeInfo = :wflChangeInfo"),    @NamedQuery(name = "WflProcess.findByWflRequestInfo", query = "SELECT w FROM WflProcess w WHERE w.wflRequestInfo = :wflRequestInfo"),    @NamedQuery(name = "WflProcess.findIdByWflTitle", query = "SELECT w.wflProcessId FROM WflProcess w WHERE w.wflTitle = :wflTitle"),    @NamedQuery(name = "WflProcess.findSystemById", query = "SELECT w.wflSystem FROM WflProcess w WHERE w.wflProcessId = :wflProcessId"),    @NamedQuery(name = "WflProcess.findVersionByWflProcessId", query = "SELECT w.wflProcessVersion FROM WflProcess w WHERE w.wflProcessId = :wflProcessId ORDER BY w.wflProcessVersion DESC"),    @NamedQuery(name = "WflProcess.findAllIds", query = "SELECT w.wflProcessId FROM WflProcess w  ORDER BY w.wflProcessId DESC")})public class WflProcess implements Serializable{    private static final long serialVersionUID = 1L;    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    @Basic(optional = false)    @Column(name = "wfl_id")    private Integer wflId;    @Basic(optional = false)    @Column(name = "wfl_system")    private String wflSystem;    @Basic(optional = false)    @Column(name = "wfl_process_id")    private String wflProcessId;    @Basic(optional = false)    @Column(name = "wfl_process_version")    private String wflProcessVersion;    @Basic(optional = false)    @Column(name = "wfl_title")    private String wflTitle;    @Basic(optional = false)    @Column(name = "wfl_description")    private String wflDescription;    @Basic(optional = false)    @Column(name = "wfl_author")    private String wflAuthor;    @Basic(optional = false)    @Column(name = "wfl_date")    @Temporal(TemporalType.TIMESTAMP)    private Date wflDate;    @Basic(optional = false)    @Column(name = "wfl_change_info")    private String wflChangeInfo;    @Basic(optional = false)    @Column(name = "wfl_request_info")    private String wflRequestInfo;    @Basic(optional = false)    @Column(name = "wfl_status")    private String wflStatus;    /**     * Default Class Constructor     */    public WflProcess()    {    }    /**     * Class Constructor with Primary Key Parameter     *     * @param wflId     */    public WflProcess(Integer wflId)    {        this.wflId = wflId;    }    /**     * Class Constructor with Parameters     *     * @param wflId  Primary Key     * @param wflSystem  System Name     * @param wflProcessId  Workflow ID     * @param wflProcessVersion  Workflow Version     * @param wflTitle  Workflow Name     * @param wflDescription  Workflow Description     * @param wflAuthor  Workflow Author     * @param wflDate  Workflow Create Date     * @param wflChangeInfo  Workflow Changes     * @param wflRequestInfo  Workflow Request Info     * @param wflStatus  Workflow Status --> active/freeze     */    public WflProcess(Integer wflId, String wflSystem, String wflProcessId, String wflProcessVersion, String wflTitle, String wflDescription, String wflAuthor, Date wflDate, String wflChangeInfo, String wflRequestInfo, String wflStatus)    {        this.wflId = wflId;        this.wflSystem = wflSystem;        this.wflProcessId = wflProcessId;        this.wflProcessVersion = wflProcessVersion;        this.wflTitle = wflTitle;        this.wflDescription = wflDescription;        this.wflAuthor = wflAuthor;        this.wflDate = wflDate;        this.wflChangeInfo = wflChangeInfo;        this.wflRequestInfo = wflRequestInfo;        this.wflStatus = wflStatus;    }    /**     *     * @return Primary Key     */    public Integer getWflId()    {        return wflId;    }    /**     *     * @param wflId     */    public void setWflId(Integer wflId)    {        this.wflId = wflId;    }    /**     *     * @return System Name     */    public String getWflSystem()    {        return wflSystem;    }    /**     *     * @param wflSystem     */    public void setWflSystem(String wflSystem)    {        this.wflSystem = wflSystem;    }    /**     *     * @return Workflow ID     */    public String getWflProcessId()    {        return wflProcessId;    }    /**     *     * @param wflProcessId     */    public void setWflProcessId(String wflProcessId)    {        this.wflProcessId = wflProcessId;    }    /**     *     * @return Workflow Version     */    public String getWflProcessVersion()    {        return wflProcessVersion;    }    /**     *     * @param wflProcessVersion     */    public void setWflProcessVersion(String wflProcessVersion)    {        this.wflProcessVersion = wflProcessVersion;    }    /**     *     * @return Workflow Name     */    public String getWflTitle()    {        return wflTitle;    }    /**     *     * @param wflTitle     */    public void setWflTitle(String wflTitle)    {        this.wflTitle = wflTitle;    }    /**     *     * @return Workflow Description     */    public String getWflDescription()    {        return wflDescription;    }    /**     *     * @param wflDescription     */    public void setWflDescription(String wflDescription)    {        this.wflDescription = wflDescription;    }    /**     *     * @return Workflow Author     */    public String getWflAuthor()    {        return wflAuthor;    }    /**     *     * @param wflAuthor     */    public void setWflAuthor(String wflAuthor)    {        this.wflAuthor = wflAuthor;    }    /**     *     * @return Workflow Create Date     */    public Date getWflDate()    {        return wflDate;    }    /**     *     * @param wflDate     */    public void setWflDate(Date wflDate)    {        this.wflDate = wflDate;    }    /**     *     * @return Workflow Change Info     */    public String getWflChangeInfo()    {        return wflChangeInfo;    }    /**     *     * @param wflChangeInfo     */    public void setWflChangeInfo(String wflChangeInfo)    {        this.wflChangeInfo = wflChangeInfo;    }    /**     *     * @return Workflow Request Info     */    public String getWflRequestInfo()    {        return wflRequestInfo;    }    /**     *     * @param wflRequestInfo     */    public void setWflRequestInfo(String wflRequestInfo)    {        this.wflRequestInfo = wflRequestInfo;    }    /**     * @return the wflStatus     */    public String getWflStatus()    {        return wflStatus;    }    /**     * @param wflStatus the wflStatus to set     */    public void setWflStatus(String wflStatus)    {        this.wflStatus = wflStatus;    }    @Override    public int hashCode()    {        int hash = 0;        hash += (wflId != null ? wflId.hashCode() : 0);        return hash;    }    @Override    public boolean equals(Object object)    {        // TODO: Warning - this method won't work in the case the id fields are not set        if (!(object instanceof WflProcess))        {            return false;        }        WflProcess other = (WflProcess) object;        if ((this.wflId == null && other.wflId != null) || (this.wflId != null && !this.wflId.equals(other.wflId)))        {            return false;        }        return true;    }


    Tiefere Einblicke kann ich leider nicht gewähren...da der Rest aus einer von mir importierten .jar kommt und ich zu diesen keine sourcen besitze.


    Die .jar's sind:


    Code
    eclipselink-2.0.2.jar
    eclipselink-javax.persistence-2.0.jar



    so...hab ich immernoch was vergessen??

    Also antworten tust du ja fix. :)


    Also der relevante LotusScript Code:


    Code
    Private jSession As JavaSessionPrivate jError As JavaError 	Private WflClass As JavaClass 	Private wfl As JavaObject...Sub New (sServer As String, sFilePath As String)		On Error GoTo ErrorHandling		Dim sLocationInfo As String		sLocationInfo = CQSYS_DESIGNELEMENT & "CQWFL_Definition_Database.new"Set jSession = New JavaSessionSet WflClass = jSession.GetClass("lotus/wrapper/JavaLotusWrapper")Set wfl = WflClass.CreateObject()Exit Sub		ErrorHandling:		Set jError = jSession.getLastJavaError		Print Error		Print jError.ErrorMsg		Print jError.StackTrace	End Sub




    Der aufgerufende Konstruktor der Java-Einstiegsklasse:




    Natürlich rufe ich den EntityManager nicht mit PERSISTENCENAME auf...das war nur zu Veranschaulichung. Der Persistencename wurde von mir und auch anderen mehrmals überprüft. An dem liegt es also nicht.


    Beim Importieren meines Packages hatte der Designer mir mitgeteilt, dass das Package mit einer Version die höher als 1.5 erstellt wurde und wurde gefragt ob ich die Designerversion auf 1.5 umstellen möchte. Dies habe ich auch getan. Aber welche Version nun auf dem Server läuft, weiß ich jetz auf anhieb leider nicht genau. Kannst Du mir sagen wie ich das herusfinde?


    Ach so...als Java Agent...mmmhh...jut dem würde ich mich widmen wenn wir hier keine Lösung finden sollten. :)

    Naja


    Code
    javax.persistence.PersistenceException: No Persistence provider for EntityManager named PERSISTENCENAME


    sagt eigentlich aus das entweder was innerhalb der persistence.xml
    nicht stimmt oder die Datei garnicht erst gefunden wird. Ersteres kann ich eigentlich ausschließen, da wie bereits erwähnt, das Java Package außerhalb von Notes problemlos läuft.


    Code
    LS2J Error: Java constructor failed to execute


    Diese Fehlermeldung kommt, da der Klassenkonstruktor in meiner Java-Einstiegsklasse (die Schnittstelle zwischen LotusScript und Java) auf einen Fehler läuft, der wiederum durch die "fehlende/nicht auffindbare" persistence.xml verursacht wird.


    Was noch darauf hinweist, dass das Problem mit der xml zusammenhängt ist, dass ich ein zweites Java Package erstellt und integriert habe, was keine Konfigurationsfile braucht. Dieses Package läuft auch innerhalb Notes problemlos.


    Wie meinst du das mit reiner Java-Umgebung?
    Es besteht bereits eine komplette Notes Applikation und das Java Package ist eigentlich nur einen einzelnes Tool was ich in die Notes Applikation integrieren möchte. Also wie sonst, wenn nicht mit J2LS?

    Ich konnte mein Problem wohl noch nicht korrekt darstellen.


    Ich möchte Daten die in einer Dominodatenbank gespeichert sind teilweise nach MySQL auslagern.


    Dazu nutze ich die Java Persistence Api. Diese bringt zur Konfiguration eine persistence.xml mit. Den Pfad zu dieser persistence.xml kann ich leider nicht angeben/beeinflussen.


    Wenn ich in dem "normalen" eclipse alle Javaklassen erstellt habe und via Resources die xml hinzugefügt habe...läuft alles ohne Probleme.
    Da der Notes Designer ja auf Eclipse basiert, dachte ich mir das es da genau so "einfach" geht.
    Also was habe ich gemacht?


    "New Script Library... --> Java Libraray" JavaLib erstellt!


    "Import --> Java Source" damit habe ich alle Java Klassen importiert!


    "Import --> Archive" Alle benötigten JARS importiert.


    "Import --> Resource" Damit habe ich die persistence.xml importiert!


    Beim Ausführen meiner Applikation erhalte ich folgende Fehlermeldung in der Admin Console:


    "LS2J Error: Java constructor failed to execute"
    "javax.persistence.PersistenceException: No Persistence provider for EntityManager named PERSISTENCENAME"


    Demzufolge schließe ich daraus, dass er die xml nicht finden kann.

    Hi...


    Ähm? Du meinst innerhalb der Java-Klasse?


    und zwar mit


    Code
    new BufferedInputStream(new FileInputStream(FILEPATH))


    so funktioniert das mehr oder weniger auch...da ich die File irgendwo auf dem Server platzieren könnte, und den Pfad dann absolut angeben könnte.


    Nur was mach ich wenn sich die Datei innerhalb eines JAR-Archives befindet und der Pfad relativ angegeben ist?


    BTW: Ausserhalb des Designer läuft mein Java-Package problemlos!

    Hallo an alle,


    ich habe eine kleines Problem.
    Ich habe ein eigenes Java Package ausserhalb des Designer erstellt und in den Designer unter "Script Libraries" als Javalib importiert. Diese Java Package nutzt eine Properties File in der Einstellung für das Ausführen des Java-Package stehen.


    Diese Properties-File ist eine xml, die ich innerhalb der Javalib mit "Import -> Resource" eingebunden habe.


    Sofern ich meine Domino Applikation ausführe und auf das Java-Package zugreife, erhalte ich die Fehlermeldung, dass die Properties-File nicht gefunden worden ist.


    Was mach ich falsch?