尝试在连接到我的Domino服务器的Vaadin中构建hello world

时间:2018-03-16 13:04:43

标签: vaadin lotus-domino

我创建了一个基本的Vaadin应用程序,然后添加了我的Domino Jar文件。

当我运行应用程序时,我明白了 [com.vaadin.server.ServiceException:java.lang.NoClassDefFoundError:lotus / domino / NotesException]

我已经阅读了很多关于使用OSGI等的文章。是否有一种简单的方法可以在没有所有插件的情况下从Vaadin访问Domino数据?如果没有,有人可以解释原因吗?

这是主叫代码

undefined

这是多米诺骨牌代码

package com.lms.helloDomino;

import javax.servlet.annotation.WebServlet;

import com.lms.service.StarService;
import com.vaadin.annotations.Theme;
import com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinServlet;
import com.vaadin.ui.Button;
import com.vaadin.ui.Label;
import com.vaadin.ui.TextField;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;

import lotus.domino.NotesException;

/**
 * This UI is the application entry point. A UI may either represent a browser window 
 * (or tab) or some part of an HTML page where a Vaadin application is embedded.
 * <p>
 * The UI is initialized using {@link #init(VaadinRequest)}. This method is intended to be 
 * overridden to add component to the user interface and initialize non-component functionality.
 */
@Theme("mytheme")
public class MyUI extends UI {

    @Override
    protected void init(VaadinRequest vaadinRequest) {

        StarService myStarService = null;

        try
        {
            myStarService = new StarService();
            myStarService.openStarDB();
        } catch ( Exception e1 )
        {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

        final VerticalLayout layout = new VerticalLayout();

        final TextField name = new TextField();
        name.setCaption("Your Domino Name");
        name.setValue( myStarService.getNABProfile( "" ).fullName.toString() );

        Button button = new Button("Click Me");
        button.addClickListener(e -> {
            layout.addComponent(new Label("Thanks " + name.getValue() 
                    + ", it works!"));
        });

        layout.addComponents(name, button);

        setContent(layout);
    }

    @WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
    @VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
    public static class MyUIServlet extends VaadinServlet {
    }
}

1 个答案:

答案 0 :(得分:1)

原来这是一个构建路径问题。非常感谢mindoo.de的Karsten Lehmann,他帮我解决了这个问题。

我没有意识到在运行提供Vaadin应用程序的Apache Web服务器时,也需要我的Domino .jar文件在它的构建路径上。他向我展示了如何将.jar文件添加到Apache中,如下所示:

双击服务器选项卡下的Apache服务器

单击“打开启动配置”

单击“类路径”选项卡

突出显示用户条目并添加外部Jar文件。

我一直在寻找这个/现在一年​​。不敢相信它终于有效了!!!