Jersey-POST:UniformInterfaceException

时间:2014-06-16 20:12:48

标签: java rest jersey

我最近加入了一个项目,我应该将Web服务从Axis1.2更改为REST。该项目已经开发了10年,很多人都在研究它,所以不幸的是我不知道为什么会这样做,只是它完成了。

我正在使用Jersey,虽然我已经完成了很多教程,但它仍然不起作用。

这是我的服务器代码:

@Path("/positionfacade")
@Consumes(MediaType.APPLICATION_XML)
public class PositionFacadeRest implements PositionFacadeInterface {

    @POST
    @Path("/{sessionId}/{type}/{mapIdentifier}/{positionX}/{positionY}/{positionZ}/{character}/{identifier}/{displayName}/{fixed}/{attributes}/{lastObservedTime}/{sensorData}/{coordinates}")
    @Consumes(MediaType.APPLICATION_XML)
    public void createOrUpdatePositionRest(
                    @PathParam("sessionId") long sessionId, 
                    @PathParam("type") String type, 
                    @PathParam("mapIdentifier") String mapIdentifier, 
                    @PathParam("positionX") Integer positionX, 
                    @PathParam("positionY") Integer positionY, 
                    @PathParam("positionZ") Integer positionZ,
                    @PathParam("character") SignalCharacterDTO character, 
                    @PathParam("identifier") String identifier, 
                    @PathParam("displayName") String displayName, 
                    @PathParam("fixed") Boolean fixed, 
                    @PathParam("attributes") AttributesDTO attributes, 
                    @PathParam("lastObservedTime") long lastObservedTime, 
                    @PathParam("sensorData") SensorDTO[] sensorData,
                     @PathParam("coordinates") CoordinateDTO[] coordinates) 
            throws SessionException, MapException {
            ...
     }
}

我的客户代码:

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;

...

Client restclient = Client.create();
WebResource resource = restclient.resource("http://"+sci.getHostName()+":"+new Integer(sci.getPort()).toString()+"/application/rest/positionfacade/"+
    sessionIds.get(sci)+"/"+
    node.getType()+"/"+
    controller.getCurrentMap().getIdentifier()+"/"+
    node.getX()+"/"+
    node.getY()+"/"+
    node.getZ()+"/"+
    signalCharacter_+"/"+
    node.getIdentifier()+"/"+
    node.getDisplayName()+"/"+
    null+"/"+
    null+"/"+
    lastObservedTime_+"/"+
    null+"/"+
    null
    );

resource.post();

web.xml:

<servlet>
  <servlet-name>rest</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>net.sf.application.server.facade</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>rest</servlet-name>
  <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

错误消息:

Exception in thread "Thread-64" com.sun.jersey.api.client.UniformInterfaceException: POST http://localhost:8080/application/rest/positionfacade/121/CLIENT/eca723a4-bd53-405e-893b-6ff8365d58b9/0/0/0/net.sf.application.server.dto.SignalCharacterDTO@229509bb/1/1/null/null/-1/null/null returned a response status of 404 Not Found

应用程序在Tomcat7上运行,位于webapps / application

许多人非常感谢您的帮助。 : - )

0 个答案:

没有答案