首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAX应用程序+ Wildfly 8+ ExtJS不能访问服务器方法

JAX应用程序+ Wildfly 8+ ExtJS不能访问服务器方法
EN

Stack Overflow用户
提问于 2015-01-15 14:40:48
回答 2查看 569关注 0票数 0

我对Java完全陌生。我研究了一些示例和快速启动,并希望从零开始构建自己的简单helloWorld应用程序。我已经实现了服务器端,但是在将它部署到服务器上之后,我无法使用REST访问方法。在最后一步,我想将Java与ExtJS集成起来,但现在我仍然停留在我描述的问题上。我读过几十本教程,但它们似乎很简洁。我想做的只是简单的使用Rest的helloWorld应用程序,并将其与ExtJS集成。但是,当我甚至不能通过URL访问服务器方法时,我就无法继续前进了。

我在JBoss开发者工作室中创建了新的动态Web,并在项目属性中切换了JAX支持。我不知道我做错了什么。

这是我的代码:

代码语言:javascript
复制
package main;


import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.ApplicationPath;


import javax.ws.rs.core.Application;


@ApplicationPath("/SimpleApp")
public class Controller extends Application {

    @Inject
    RestService helloService;

    @PUT
    @Path("/json")
    @Produces({ "application/json" })
    public String getHelloWorldJSON() {
        return "{\"result\":\"" + helloService.createHelloMessage("World") + "\"}";
    }

    @GET
    @Path("/json")
    @Produces({ "application/json" })
    public String getHelloWorldJSON2() {
        return "{\"result\":\"" + helloService.createHelloMessage("World") + "\"}";
    }

    @POST
    @Path("/json")
    @Produces({ "application/json" })
    public String getHelloWorldJSON3() {
        return "{\"result\":\"" + helloService.createHelloMessage("World") + "\"}";
    }

    @POST
    @Path("/xml")
    @Produces({ "application/xml" })
    public String getHelloWorldXML() {
        return "<xml><result>" + helloService.createHelloMessage("World") + "</result>`</xml>";`
    }

}

RestService是simeple POJO类。它只包含一个方法,它以Hello+whatever作为参数返回字符串。

当我输入浏览器http://localhost:8088/SimpleApp/json时,我只得到NotFound或405错误:不允许方法。

提前谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-16 10:20:23

我和同事一起设法解决了问题。

代码语言:javascript
复制
package main;

import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import javax.ws.rs.core.MediaType;


@Path("/")
public class Controller {

@Inject
RestService helloService;

@PUT
@Path("/json/{id}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ "application/json" })
public String getHelloWorldJSON(@PathParam("id") int id) {
    return "{\"result\":\"" + helloService.createHelloMessage("World") + "\"}";
}

RestActivator类

代码语言:javascript
复制
package main;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;


@ApplicationPath("/rest")
public class RestActivator extends Application {
    /* class body intentionally left blank */
}

RestService类

代码语言:javascript
复制
package main;

import javax.ejb.Stateless;

@Stateless
public class RestService {

    public String createHelloMessage(String name) {
            return "Hello " + name + "!";
        }
}

有了这种结构,服务器响应,我也可以使用ExtJs调用方法。在Controller中使用@PathParam是因为我从ExtJs模型中调用此方法,并在整个URL ExtJs保持一个实例的Id之后调用该方法。

网址示例:http://localhost:8088/SimpleApp/rest/json

不管怎样,谢谢你的帮助。

票数 0
EN

Stack Overflow用户

发布于 2015-01-15 15:05:27

第一个错误是,您的两个方法在注释中有相同的路径。

其次,排除上面的配置错误,我可以建议你看看你的web应用程序。它本身将有一个上下文根,请将它附加到您正在使用的URL中,并且它应该可以工作。

因此,url的格式如下:

http://localhost:port/webcontextroot/SimpleApp/json

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27965887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档