stackoverflow に回答を投稿するのは初めてです。あなたが私を助けてくれることを願っています。
Google マップを使用して Android アプリを開発しています。HTTP REST 経由で JBOSS 7 サーバーを呼び出します。このサーバーは、HTTP REST 経由で別のサーバーを呼び出して、いくつかのオープン データからいくつかのポイントを取得します。次に、最初のサーバーが応答を受け取ると、スマートフォン クライアント用のデータを準備する必要があります。GeoPoint を使用して、OverlayItem の配列リストを作成します。ただし、GeoPoint の作成時には例外があります。
maps.jar と gson-2.2.2.jar を /WebContent/WEB-INF/lib/ に配置しましたが、動作しているように見えますが、Java と JBoss の専門家ではなく、それが正しいかどうかわかりません。
これは JBoss コンソールの例外です。
11:36:23,287 エラー [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/Prototipo_server_2].[it.unifi.sistemiTelematici.BikeServer.Rest.BikeServerREST]] (http --0.0.0.0-8080-1) サーブレット it.unifi.sistemiTelematici.BikeServer.Rest.BikeServerREST の Servlet.service() が例外をスローしました: org.jboss.resteasy.spi.UnhandledException: java.lang.RuntimeException: org のスタブ.jboss.resteasy.core.SynchronousDispatcher.handleApplicationException(SynchronousDispatcher.java:340) [resteasy-jaxrs-2.3.2.Final.jar:] org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:214) で[resteasy-jaxrs-2.3.2.Final.jar:] org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:190) で [resteasy-jaxrs-2.3.2.Final.jar:] org. jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:540) [resteasy-jaxrs-2.3.2.Final.jar:] at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:502) [resteasy-jaxrs-2.3. 2.Final.jar:] org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:119) で [resteasy-jaxrs-2.3.2.Final.jar:] org.jboss.resteasy.plugins.server で.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208) [resteasy-jaxrs-2.3.2.Final.jar:] org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55) で[resteasy-jaxrs-2.3.2.Final.jar:] org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50) で [resteasy-jaxrs-2.3.2.Final.jar: ] javax.servlet.http.HttpServlet で。サービス (HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina. core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:] org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13. Final.jar:] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] at org. apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve) .java:109) [jbossweb-7.0.13.Final.jar:] org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:] org .apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:] org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) で[jbossweb-7.0.13.Final.jar:] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:] at java. lang.Thread.run(不明なソース) [rt.jar:1.7.0_09] 原因: java.lang.RuntimeException: stub at com.google.android.maps.GeoPoint.(不明なソース) [maps.jar:] at it.unifi.sistemiTelematici.BikeServer.Rest.ServiziRastrelliere.getRastrelliereList(ServiziRastrelliere.java:100) [classes:] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [ rt.jar:1.7.0_09] で sun.reflect.NativeMethodAccessorImpl.invoke(不明なソース) [rt.jar:1.7.0_09] で sun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース) [rt.jar:1.7.0_09] java.lang.reflect.Method.invoke(不明なソース) [rt.jar:1.7.0_09] org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:155) [resteasy-jaxrs-2.3.2 .Final.jar:] at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:257) [resteasy-jaxrs-2.3.2.Final.jar:] at org.jboss.resteasy.core.ResourceMethod.呼び出し (ResourceMethod.java:222) [resteasy-jaxrs-2.3.2.Final.jar:] at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:211) [resteasy-jaxrs-2.3.2.Final.jar:] at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:525) [resteasy-jaxrs-2.3.2.Final.jar:] ... 19 もっと見る
そして、これは例外を与えるクラスのコードです:
package it.unifi.sistemiTelematici.BikeServer.Rest;
import it.unifi.sistemiTelematici.BikeServer.JSON.JSONArray;
import it.unifi.sistemiTelematici.BikeServer.JSON.JSONException;
import it.unifi.sistemiTelematici.BikeServer.JSON.JSONObject;
import it.unifi.sistemiTelematici.BikeServer.Utils.CoordinatesUtilities;
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.OverlayItem;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
@Path("/ServiziRastrelliere")
public class ServiziRastrelliere {
private RestComuneFirenze restComune;
private CoordinatesUtilities CoordinatesUtilities;
public ServiziRastrelliere() {
restComune = new RestComuneFirenze();
CoordinatesUtilities = new CoordinatesUtilities();
}
JSONArray rastrelliereFeatures = null;
@GET
@Produces("application/json")
@Path("/RastrelliereList/{latitudine}/{longitudine}")
public String getRastrelliereList(@PathParam("latitudine") String latitudine, @PathParam("longitudine") String longitudine){
String rastrelliereListJSON = null;
JSONObject rastrellieraObj, rastrellieraGeometryObj, rastrellieraPropertiesObj;
JSONArray rastrellieraCoordinates;
double rastrellieraCoordX, rastrellieraCoordY;
int rastrellieraCoordXint, rastrellieraCoordYint;
String rastrellieraPostiString, rastrellieraLocalizzazione, rastrellieraModello;
List<OverlayItem> myOverlayItemList = new ArrayList<OverlayItem>();
Type listOfMyOverlayItemType = new TypeToken<List<OverlayItem>>(){}.getType();
rastrelliereFeatures = restComune.getRastrelliereList(latitudine, longitudine);
if (rastrelliereFeatures != null) {
try {
for (int i = 0; i < rastrelliereFeatures.length(); i ++) {
rastrellieraObj = rastrelliereFeatures.getJSONObject(i);
rastrellieraGeometryObj = rastrellieraObj.getJSONObject("geometry");
rastrellieraCoordinates = rastrellieraGeometryObj.getJSONArray("coordinates");
rastrellieraCoordX = rastrellieraCoordinates.getDouble(0);
rastrellieraCoordY = rastrellieraCoordinates.getDouble(1);
rastrellieraCoordXint = CoordinatesUtilities.fromJSONtoItemCoord(rastrellieraCoordX);
rastrellieraCoordYint = CoordinatesUtilities.fromJSONtoItemCoord(rastrellieraCoordY);
rastrellieraPropertiesObj = rastrellieraObj.getJSONObject("properties");
rastrellieraPostiString = rastrellieraPropertiesObj.get("NUMPOSTI").toString();
rastrellieraLocalizzazione = rastrellieraPropertiesObj.getString("LOCALIZZAZIONE");
rastrellieraModello = rastrellieraPropertiesObj.getString("MODELLO");
//myOverlayItemList.add(new OverlayItem(new GeoPoint(rastrellieraCoordYint, rastrellieraCoordXint), rastrellieraLocalizzazione, "Modello = " + rastrellieraModello + "Posti: " + rastrellieraPostiString));
System.out.println("rastrellieraCoordYint = " + rastrellieraCoordYint + " rastrellieraCoordXint = " + rastrellieraCoordXint);
//myOverlayItemList.add(new OverlayItem(new GeoPoint(rastrellieraCoordYint, rastrellieraCoordXint), "a", "b"));
GeoPoint geopoint = new GeoPoint(43770262, 11252829);
//myOverlayItemList.add(new OverlayItem( new GeoPoint(43770262, 11252829), "Access Title 1", "Access snippet 1"));
}
} catch (JSONException ex) {
ex.printStackTrace();
}
Gson gson = new Gson();
rastrelliereListJSON = gson.toJson(myOverlayItemList, listOfMyOverlayItemType);
} else {
rastrelliereListJSON = "error";
}
return rastrelliereListJSON;
}
}