#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
Большое, большое спасибо за вашу помощь заранее. 🙂