程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了尝试构建Web服务时出现ContainerException大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决尝试构建Web服务时出现ContainerException?

开发过程中遇到尝试构建Web服务时出现ContainerException的问题如何解决?下面主要结合日常开发的经验,给出你关于尝试构建Web服务时出现ContainerException的解决方法建议,希望对你解决尝试构建Web服务时出现ContainerException有所启发或帮助;

@H_539_3@mapErpservice用@Path("/erp")(或其他字符串)注释您的班级。

解决方法

我收到一个错误,指示缺少root resource classin resource Config。这是我的网络服务代码:

public class MapErpservice {

//first a URI for each resource,create using PUT
DBUtils db;
MapErpservice()
{
    db=new DBUtils("zmaperp","root","root");
}

@PUT
@Path("/{objtypE}/{objkey}")
@Consumes(MediaType.APPLICATION_JSON)
public Response createGeometry(@PathParam("objtype") String objtype,@PathParam("objkey") String objkey,JSONObject obj)
{
    //generate gisuniqkey here
    JSONObject geo=(JSONObject) obj.get("geometry");
    String gisuniqkey=(String) obj.get("gisuniqkey");
    String wkt=db.convertToWKT(geo.toJSONString());
    if(db.insertGeometryValues(gisuniqkey,objkey,objtype,wkt))
    {
        System.out.println("Data inserted successfully using PUT with objkey: "+objkey);
        return Response.status(201).entity("Data inserted successfully using PUT with objkey: "+objkey).build();
    }

    else
    {
        System.out.println("Data could not be inserted successfully");
        return Response.status(500).entity("Data inserted successfully using PUT with objkey: "+objkey).build();
    }
}

@POST
@Path("/{objtypE}")
@Consumes(MediaType.APPLICATION_JSON)
public Response createGeometryUsingPost(@PathParam("objtype")String objtype,JSONObject obj)
{
    //both gisuniqkey and objkey have to be generated by magic here...
    JSONObject geo=(JSONObject) obj.get("geometry");
    String gisuniqkey=(String) obj.get("gisuniqkey");
    String objkey=(String)obj.get("objkey");
    String wkt=db.convertToWKT(geo.toJSONString());
    if(db.insertGeometryValues(gisuniqkey,wkt))
    {
        //set response code to 201(??) here
        System.out.println("Data inserted successfully using PUT with objkey: "+objkey);
        return Response.created(URI.create("http://localhost:8180/"+"GoogleMapsLoadingTest/"+objtype+"/"+objkey)).status(201).entity("Data inserted successfully using POST with objkey: "+objkey).build();
    }
    else
        //set response code 404??
        System.out.println("Data could not be inserted successfully");
    return Response.status(201).entity("Data could not be inserted successfully").build();
}

@GET
@Path("/{objtypE}/{objkey}")
@Produces(MediaType.APPLICATION_JSON)
public JSONObject getGeometry(@PathParam("objtype")String objtype,@PathParam("objkey") String objkey)
{
    ResultSet rs=db.queryValue(objkey,objtypE);
    JSONObject res=null;
    try {
        if(rs.next())   
        {
            String wkt=rs.getString("AsText(Geometry)");
            res=db.convertToGeoJSON2(wkt);
        }
    } catch (SQLException E) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return res;
}

@PUT
@Path("/{objtypE}/{objkey}")
@Consumes(MediaType.APPLICATION_JSON)
public Response updateGeometry(@PathParam("objkey") String objkey,@PathParam("objtype") String objtype,JSONObject obj)
{
    String gisuniqkey=(String) obj.get("gisuniqkey");
    JSONObject geo=(JSONObject) obj.get("geometry");    
    String wkt=db.convertToWKT(geo.toJSONString());
    if(db.updateGeometryValue(objkey,wkt))
    {
        System.out.println("The update operation was successful for objkey: "+objkey);
        return Response.status(200).entity("The update operation was successful for objkey: "+objkey).build();
    }
    else
        //send 500 Server Error here
        System.out.println("The update operation failed completely");
    return Response.status(500).entity("The update operation failed completely").build();
}

@deletE
@Path("/{objkey}/{objtypE}")
public Response deleteGeometry(@PathParam("objkey") String objkey,@PathParam("objtype") String objtypE){
    if(db.delete(objkey,objtypE)){
        System.out.println("The delete operation was successful");
        return Response.status(200).entity("The delete operation was successful").build();
    }
    else
    {

        System.out.println("The delete operation failed miserably");
        return Response.status(500).entity("The delete operation failed miserably").build();
    }

}

//how do I do multiple...a basic attempt using the POST method
@POST
@Path("/{objtypE}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public JSONObject getMultiGeometry(@PathParam("objtype") String objtype,JSONObject body){
    JSONObject res=null;
    JSONArray itab= (JSONArray) body.get("itab");
    ArrayList<String> keys=new ArrayList<String>();
    for(int i=0;i<itab.size();i++)
    {
        JSONObject keyObj=(JSONObject) itab.get(i);
        String objkey=(String) keyObj.get("objkey");
        keys.add(objkey);
        System.out.println("\nobjkey: "+objkey);
    }
    ResultSet rs=db.queryValues(keys);
    try {
        ArrayList<String> wktList=new ArrayList<String>();
        while(rs.next())
        {
            String wkt=rs.getString("AsText(GEOMETRY)");
            //String geo=db.convertToGeoJSON(wkt).toJSONString();
            //System.out.println("\nwkt: "+wkt+"\tgeoJSON: "+geo);
            wktList.add(wkt);
        }
        res=db.createGeometryCollection(wktList);
    }
    catch (SQLException E) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return res;
}
}

这是我的web.xml

    <display-name>GoogleMapLoadingTest</display-name>  
<servlet>
    <servlet-name>jersey REST services</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.hastha.maperp.webservice</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>jersey REST services</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

更新:

添加应用程序类无效:

  public class MapErpApplication extends Application {

public Set<Class<?>> getClasses()
{
    Set<Class<?>> res=new HashSet<Class<?>>();
    res.add(MapErpservice.class);
    res.add(MapErpGetservice.class);
    return res;
}
}

我仍然收到此错误:

    com.sun.jersey.api.container.ContainerException: The resourceConfig instance does not contain any root resource classes.
com.sun.jersey.server.impl.application.RootresourceUriRules.<init>(RootresourceUriRules.java:99)
com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1359)
com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:180)
com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:799)
com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:795)
com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:795)
com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:790)
com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:491)
com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:321)
com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605)
com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207)
com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:376)
com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:559)
javax.servlet.GenericServlet.init(GenericServlet.java:160)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.Abstracthttp11Processor.process(Abstracthttp11Processor.java:1004)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
java.lang.Thread.run(Thread.java:744)

updatE2:

现在我从浏览器执行GET请求时收到此错误

大佬总结

以上是大佬教程为你收集整理的尝试构建Web服务时出现ContainerException全部内容,希望文章能够帮你解决尝试构建Web服务时出现ContainerException所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。