Джерси-СООБЩЕНИЕ: UniformInterfaceException

#java #rest #jersey

#java #отдых #джерси

Вопрос:

Недавно я присоединился к проекту, в котором я должен изменить веб-сервисы с 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

Большое, большое спасибо за вашу помощь заранее. 🙂