如何使用GET和Hibernate在JBoss上访问servlet

时间:2014-07-23 11:06:43

标签: java-ee servlets gwt jpa jboss

我创建了一个动态Web项目,它使用GWT和JPA(Hibernate)来实现JBoss EA 6.1 +。

我能够在JBoss EAP 6.2和Eclipse插件JBoss工具(Kepler)4.1.2上部署和启动我的应用程序。

但是当我触发使用我的servlet时,我收到以下错误消息: 请求的资源(/Prototyp/com.Prototyp/service)不可用。 HTTP错误404 下面的代码和配置文件。

战争 - > WEB-INF-> web.xml

<servlet>
  <servlet-name>ReceiveDB2Service</servlet-name>
  <servlet-class>com.server.ReceiveDB2ProtokollServiceImpl</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>ReceiveDB2Service</servlet-name>
  <url-pattern>/service</url-pattern>
</servlet-mapping>
<welcome-file-list>
  <welcome-file>Prototyp.html</welcome-file>
</welcome-file-list>

我的服务界面

@RemoteServiceRelativePath("service")
public interface ReceiveDB2ProtokollService extends RemoteService {

    public ArrayList<ProtokollDatei> getProtokollFromDB2(String idString);
}

服务实施

public class ReceiveDB2ProtokollServiceImpl extends RemoteServiceServlet implements   ReceiveDB2ProtokollService {

    private static final long serialVersionUID = 8871154557738322951L;

    @PersistenceContext(unitName = "Prototyp", type = PersistenceContextType.TRANSACTION)
    private EntityManager markog04;

    @Override
    public ArrayList<ProtokollDatei> getProtokollFromDB2(String idString) {
        Query q = markog04.createNamedQuery("ProtokollDatei.findByQId");
        q.setParameter("id", 10447227393L);

        ArrayList<ProtokollDatei> protokollListe = (ArrayList<ProtokollDatei>) q.getResultList();

        return protokollListe;
    }
}

在Button和onClick事件中GWT需要的EntryPointClass

public class Prototyp implements EntryPoint {

    private TextBox userInput = new TextBox();
    private Button searchButton = new Button("Suchen");
    private VerticalPanel vertiPanel = new VerticalPanel();

    @Override
    public void onModuleLoad() {

        final AsyncCallback<ArrayList<ProtokollDatei>> protokollCallBack = new AsyncCallback<ArrayList<ProtokollDatei>>() {

            @Override
            public void onFailure(Throwable caught) {
                vertiPanel.add(new Label("onFailure:"));
                vertiPanel.add(new Label(caught.getMessage()));
            }

            @Override
            public void onSuccess(ArrayList<ProtokollDatei> result) {
                vertiPanel.add(new Label("onSuccess " + result.size()));
            }
        };

        searchButton.addClickHandler(new ClickHandler() {

            @Override
            public void onClick(ClickEvent arg0) {

                ReceiveDB2ProtokollServiceAsync service = GWT.create(ReceiveDB2ProtokollService.class);

                service.getProtokollFromDB2(userInput.getText(), protokollCallBack);
            }
        });
    }
}

最后但并非最不重要的,来自persistence.xml

<persistence-unit name="Prototyp">
    <jta-data-source>java:/datasources/markog04</jta-data-source>
    <class>com.shared.ProtokollDatei</class>
</persistence-unit>

我已经尝试更改web.xml中的url-pattern,但是我可以部署错误&#34;无法启动上下文&#34;。 我的文件夹结构: 战争   com.Prototyp   WEB-INF     部署     LIB     web.xml中   Prototyp.html

有没有人想解决这个问题? 提前感谢您的回答。 儒略

1 个答案:

答案 0 :(得分:0)

如果是404,那么它是404.你的服务器不包含资源

/Prototyp/com.Prototyp/service

确保您的网址正确无误,同时确保服务器成功安装了战争。

这不是一个复杂的问题,你只需检查一切是否到位。检查服务器工作目录,创建另一个servlet taht sais&#34; hello&#34;并尝试称之为......