2016-08-19 10 views
1

さまざまなディレクトリからいくつかのXMLファイルを読み込み、Webサービスを使用してこの情報をWebページのフロントエンドに渡そうとしています。JSONObjectをJava WebサービスからJSPページに渡す

私はJSONとspeficially GSONとJSPフロントエンドを使用してこれを行うことに決めました。私のJavaプログラムはxmlを読み込んでJSONファイルに出力し、それはすべて有効なJSONでした。私は、このページを取り、(私の最初の時間はこれをやって!)Webサービスを作成しようとしました:

package myweb; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.DocumentBuilder; 
import org.json.simple.JSONArray; 
import org.json.simple.JSONObject; 
import org.w3c.dom.Document; 
import org.w3c.dom.NodeList; 
import org.w3c.dom.Node; 
import org.w3c.dom.Element; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileWriter; 

public class WeblogicConfig 
{ 
static DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
static String Path = "*****server path here*****"; 
//static String Path = "/apps/wls/dev"; 
static File directory = new File(Path); 

static JSONObject fileObject = new JSONObject(); 
static JSONArray appArray = new JSONArray(); 
static JSONArray serverArray = new JSONArray(); 
static JSONArray JNDIArray = new JSONArray(); 

static FileWriter file; 

public WeblogicConfig() 
{ 
} 
@SuppressWarnings({ "unchecked"}) 
public static JSONObject setWLServerInfo() throws Exception 
{ 
File[] files = directory.listFiles(); 
try 
{ 
    for (File file : files) 
    { 
     if (file.isDirectory() && !file.getCanonicalPath().toString().contains("tmp") 
       && !file.getCanonicalPath().toString().contains("config_prev")) 
     { 
      setWLServerInfo(); 
     } 
     else 
     { 
      if(file.isFile() && file.getName().equals("config.xml")) 
      { 
        Path = file.getCanonicalPath().toString(); 
        displayManagedServerProp(directory,Path); 
        fileObject.put("Server Details",serverArray); 
        fileObject.get("Region"); 
      } 
     } 
    } 
} 
catch(FileNotFoundException e) 
    { 
     e.printStackTrace(); 
    } 

return fileObject; 
} 
@SuppressWarnings("unchecked") 
public static void displayManagedServerProp(File file, String Path) 
{ 
try 
{ 
    File currentFile = new File(Path); 
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
    Document doc = dBuilder.parse(currentFile); 
    doc.getDocumentElement().normalize(); 

    NodeList serverNodeList = doc.getElementsByTagName("server"); 
    NodeList domainNodeList = doc.getElementsByTagName("security-configuration"); 
    NodeList regionNodeList = doc.getElementsByTagName("server-start"); 

    Node domainNode = domainNodeList.item(0); 
    Element domainElement = (Element) domainNode; 

    Node regionNode = regionNodeList.item(0); 
    Element regionElement = (Element) regionNode; 

    for (int temp2 = 0; temp2 < serverNodeList.getLength(); temp2++) 
     { 
      JSONObject serverObject= new JSONObject(); 
      JSONObject portObject= new JSONObject(); 
      JSONObject addressObject= new JSONObject(); 
      JSONObject pathObject = new JSONObject(); 


      Node serverNode = serverNodeList.item(temp2); 

     if(temp2 == 1) //run for first loop for each file only 
      { 
       pathObject.put("Domain",domainElement.getElementsByTagName("name").item(0).getTextContent()); 
       pathObject.put("WL Version", doc.getElementsByTagName("domain-version").item(0).getTextContent()); 
       pathObject.put("Path ",Path); 
       pathObject.put("Region ", regionElement.getElementsByTagName("root-directory").item(0).getTextContent().substring(10,13)); 
      } 

     if (serverNode.getNodeType() == Node.ELEMENT_NODE && serverNode.hasChildNodes()) 
     { 

      Element serverElement = (Element) serverNode; 
      if(serverElement.getElementsByTagName("name").item(0).getTextContent().equals("AdminServer")) 
      { 

      } 
      else 
      { 
       serverObject.put("Managed Server: ", serverElement.getElementsByTagName("name").item(0).getTextContent()); 
       portObject.put("Listen Port: ",serverElement.getElementsByTagName("listen-port").item(0).getTextContent()); 
       addressObject.put("Listen Address: ", serverElement.getElementsByTagName("listen-address").item(0).getTextContent()); 

       serverArray.add(pathObject); 
       serverArray.add(serverObject); 
       serverArray.add(portObject); 
       serverArray.add(addressObject); 
      } 
     } 
     } 
} 

catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

}私はJSPがそれを呼び出して、次のしている。このことから

が、しかし、私はどのように解析するかわかりませんよオブジェクトを送信する前にJSONオブジェクトをWebサービスで処理する必要がありますか、JSPで処理を続行する必要がありますか?

<%@page import="javax.jws.WebMethod"%> 
<%@page import="javax.jws.WebService"%> 
<%@page import="myweb.*" %> 
<%@page import="org.json.simple.*" %> 
<%@page import="com.google.gson.JsonParser"%> 
<%@page import="com.google.gson.JsonElement"%> 
<%@page import="com.google.gson.JsonObject"%> 
<%@page import="com.google.gson.*"%> 
<%@page import="java.io.StringReader"%> 

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Weblogic Server Config</title> 
</head> 
<body> 
<form action="index.jsp"> 
<input type="hidden" value="submit" id="submit" name="submit" /> 
<input type="submit" value="Weblogic Config" /> 
<% WeblogicConfig myWeblogicConfig = new WeblogicConfig(); 
if(request.getParameter("submit") !=null) 
{ 
JSONObject json = myWeblogicConfig.setWLServerInfo().toString; 
JsonParser parser = new JsonParser(); 
JsonElement jsonTree = parser.parse(json); 
    //String json = "{ \"f1\":\"Hello\",\"f2\":{\"f3:\":\"World\"}}"; 

if(jsonTree.isJsonObject()) 
{ 
    JsonObject jsonObject = jsonTree.getAsJsonObject(); 
    JsonElement f1 = jsonObject.get("Server Detail:"); 
    out.println(" JSONElement is: " + json); 
     //out.println(" JSONElement is: " + f1); 
} 
} 
%> 
</form> 
</body> 
</html> 

このコードは、ボタンを作成しますが、ボタンが押されたらDefaultErrorHandler.javacErrorエラーが発生します。

Stacktrace: 
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103) 
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366) 
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:468) 
org.apache.jasper.compiler.Compiler.compile(Compiler.java:378) 
org.apache.jasper.compiler.Compiler.compile(Compiler.java:353) 
org.apache.jasper.compiler.Compiler.compile(Compiler.java:340) 
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 

私がコメントした文字列を使用する場合には、作業を行い、から読まずに基本的な機能、すなわちウェブサービス。私はJSONObjectの呼び出しや割り当てで何かが間違っていると推測していますが、何がわかりませんか?

私はJackson JSONで作業していましたが、GSONに移行することを決めた研究がありました。私はその後、別のものを作成し

public static JSONObject setWLServerInfo(File dir) throws Exception 

答えて

0

**問題は、私はもともと次のように少し見えるsetWLServerInfo()メソッドに渡したファイルの種類を削除し、私の急いで、私のWebサービスから来ました呼び出すメソッド。

public JSONObject getJSONObject() throws Exception 
{ 
    JSONObject WLConfigJsonObject = setWLServerInfo(directory); 
    return WLConfigJsonObject; 
} 

今、私は成功したオブジェクトを渡すと、現在だけで画面にそれを印刷し、有効なJSONであるように思わだと、私はまた、それを解析する必要があります。

関連する問題