2012-05-16 5 views
3

(см. Код Код ниже) Я могу запустить его на Tomcat в среде eclipse, и он работает так, как должен. я экспортировал следующее военного файл и создал Manifest.mf с:Развертывание и запуск файла войны

Manifest-Version: 1.0 
Main-Class: com.process.Test 

Когда код побежал в Затмении ответ оттуда стороны сервера выводится на консоль.

Теперь, наконец, мой вопрос (Pardon мое невежество, я довольно новыми для этого):

После войны развертывается на моем сервере Tomcat, как я могу отправить запрос REST или запустить войну и отобразить ответ сервера?

Что равнозначно: http: // localhost: 8080/rest/xml/list на реальном сервере?

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>com.process.Test</display-name> 
    <servlet> 
    <servlet-name>Jersey REST Service</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.process.Test</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

стороне клиента код:

import java.net.URI; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.UriBuilder; 
import com.sun.jersey.api.client.Client; 
//import com.sun.jersey.api.client.ClientResponse; 
import com.sun.jersey.api.client.WebResource; 
import com.sun.jersey.api.client.config.ClientConfig; 
import com.sun.jersey.api.client.config.DefaultClientConfig; 

public class Test 
{  
public static void main(String[] args) { 

    //Instead on using Apache Client 
    //used default Jersey client 
    //to send requests   
    ClientConfig config = new DefaultClientConfig(); 
    Client client = Client.create(config);  
    String _package = "api.amebatv.com"; 
    WebResource service = client.resource(getBaseURI(_package)); 

    //runRequest(service,"indexpath"); 
    runRequest(service,"list"); 
} 

/* 
* For testing purposes the base URI is :http://localhost:8080/package name 
* Will change to domain name for production code 
*/ 
private static URI getBaseURI(String _package){ 
    return UriBuilder.fromUri(
      "http://localhost:8080/api.process.com").build(); 
} 


private static void runRequest(WebResource service,String path){ 
    String response = service.path("rest/xml/"+path).accept(MediaType.APPLICATION_XML).get(String.class); 
    System.out.println("Post Response :"+response); 
} 

} 

стороне сервера:

@Path("/xml") 

public class Service { 

// List of video objects 
private ArrayList<Video> videolist; 
//Parser object, parses xml into video objects 
private Parser parser = new Parser(); 


/* 
* Constructor 
* Parse XML and create video list on call 
*/ 
public Service(){ 
    parser.createXML(); 
    videolist = parser.getList();  
} 

/************************************************ 
*GET 
* Path: /indexpath 
* list of all only <video> items 
* @return : ArrayList of Video objects 
***********************************************/ 
@GET 
@Path("/list") 
@Produces(MediaType.APPLICATION_XML) 
public List<Video> getCustomerInXML() 
{ 
    return videolist; 
} 
} 
+0

Пожалуйста, Добавьте ваш web.xml. какое имя хоста вы развертываете? просто замените localhost на это имя хоста и добавьте имя WAR после вашего контекстного имени сервлета –

+0

И реализация getBaseURI плохо пахнет, попробуйте использовать '@Context URIIInfo info' (JAX-RS) –

+0

Просто добавил мой web.xml; могу ли я ввести имя хоста в качестве IP-адреса? например, 192.x.x.x/myfile.war – Fabii

ответ

8

URL-адрес в веб-приложение, зависит от многих факторов, сервер приложений, конфигурационные файлы, web.xml и конфигурацию сервера приложений.

Но в некоторых случаев это «первая вещь, чтобы попробовать, если вы не знаете» (не является официальным, но «это работает» правило большого пальца)

http://hostnameOrIP:8080/WARFILENAMEWITHOUTEXTENSION 
  • hostnameOrIP: ну, просто заменить с именем хоста или IP
  • заменить с портом по умолчанию для вашего сервера приложений (9001, 9090, 3000 и т.д. ...)
  • заменить WARFILENAMEWITHOUTEXTENSION с, ну, опять же, именем файла просто войны без расширения

Это опять-таки неофициальное, попробуйте-это первый способ, если у вас нет другого способа сказать ...

+0

Благодарим вас за то, что вы переделали мою версию java, чтобы убедиться, что она соответствует той среде, в которой работает мой сервер tomcat. Я должен был заставить его работать. – Fabii

Смежные вопросы