마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

웹서버에서 모바일로 보내는 소스인데 왜 오류가 뜨는거죠?

0 추천
오류 내용은

1월 18, 2017 1:07:26 오후 org.apache.catalina.core.StandardWrapperValve invoke
심각: Servlet.service() for servlet [jsp] in context with path [/web1] threw exception [Unable to compile class for JSP:

An error occurred at line: 45 in the jsp file: /push_notification.jsp
Sender cannot be resolved to a type
42:         }
43:         conn.close();
44:         
45:         Sender sender = new Sender(simpleApiKey);//%
46:         Message message = new Message.Builder()    //%
47:         .collapseKey(MESSAGE_ID)
48:         .delayWhileIdle(SHOW_ON_IDLE)

An error occurred at line: 45 in the jsp file: /push_notification.jsp
Sender cannot be resolved to a type
42:         }
43:         conn.close();
44:         
45:         Sender sender = new Sender(simpleApiKey);//%
46:         Message message = new Message.Builder()    //%
47:         .collapseKey(MESSAGE_ID)
48:         .delayWhileIdle(SHOW_ON_IDLE)

An error occurred at line: 46 in the jsp file: /push_notification.jsp
Message cannot be resolved to a type
43:         conn.close();
44:         
45:         Sender sender = new Sender(simpleApiKey);//%
46:         Message message = new Message.Builder()    //%
47:         .collapseKey(MESSAGE_ID)
48:         .delayWhileIdle(SHOW_ON_IDLE)
49:         .timeToLive(LIVE_TIME)

An error occurred at line: 46 in the jsp file: /push_notification.jsp
Message.Builder cannot be resolved to a type
43:         conn.close();
44:         
45:         Sender sender = new Sender(simpleApiKey);//%
46:         Message message = new Message.Builder()    //%
47:         .collapseKey(MESSAGE_ID)
48:         .delayWhileIdle(SHOW_ON_IDLE)
49:         .timeToLive(LIVE_TIME)

An error occurred at line: 52 in the jsp file: /push_notification.jsp
MulticastResult cannot be resolved to a type
49:         .timeToLive(LIVE_TIME)
50:         .addData("message",msg)
51:         .build();
52:         MulticastResult result1 = sender.send(message,token,RETRY);    //%
53: /*         if (result1 != null) {
54:             List<Result> resultList = result1.getResults();
55:             for (Result result : resultList) {

Stacktrace:] with root cause
org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 45 in the jsp file: /push_notification.jsp
Sender cannot be resolved to a type
42:         }
43:         conn.close();
44:         
45:         Sender sender = new Sender(simpleApiKey);//%
46:         Message message = new Message.Builder()    //%
47:         .collapseKey(MESSAGE_ID)
48:         .delayWhileIdle(SHOW_ON_IDLE)

An error occurred at line: 45 in the jsp file: /push_notification.jsp
Sender cannot be resolved to a type
42:         }
43:         conn.close();
44:         
45:         Sender sender = new Sender(simpleApiKey);//%
46:         Message message = new Message.Builder()    //%
47:         .collapseKey(MESSAGE_ID)
48:         .delayWhileIdle(SHOW_ON_IDLE)

An error occurred at line: 46 in the jsp file: /push_notification.jsp
Message cannot be resolved to a type
43:         conn.close();
44:         
45:         Sender sender = new Sender(simpleApiKey);//%
46:         Message message = new Message.Builder()    //%
47:         .collapseKey(MESSAGE_ID)
48:         .delayWhileIdle(SHOW_ON_IDLE)
49:         .timeToLive(LIVE_TIME)

An error occurred at line: 46 in the jsp file: /push_notification.jsp
Message.Builder cannot be resolved to a type
43:         conn.close();
44:         
45:         Sender sender = new Sender(simpleApiKey);//%
46:         Message message = new Message.Builder()    //%
47:         .collapseKey(MESSAGE_ID)
48:         .delayWhileIdle(SHOW_ON_IDLE)
49:         .timeToLive(LIVE_TIME)

An error occurred at line: 52 in the jsp file: /push_notification.jsp
MulticastResult cannot be resolved to a type
49:         .timeToLive(LIVE_TIME)
50:         .addData("message",msg)
51:         .build();
52:         MulticastResult result1 = sender.send(message,token,RETRY);    //%
53: /*         if (result1 != null) {
54:             List<Result> resultList = result1.getResults();
55:             for (Result result : resultList) {
Stacktrace:
    at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
    at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:198)
    at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:457)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:361)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:336)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:323)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:585)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:363)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:509)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1104)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)

이렇게 뜨는데 jsp가 부족해서 모르겠네요 뭐가 잘못된거죠?
기객 (3,600 포인트) 님이 2017년 1월 18일 질문
ㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇ
ㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇ
<%@page import="java.net.URLEncoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>
<%@ page import="com.google.android.gcm.server.*"%>
 
<%
    ArrayList<String> token = new ArrayList<String>();    //token값을 ArrayList에 저장
    String MESSAGE_ID = String.valueOf(Math.random() % 100 + 1);    //메시지 고유 ID
    boolean SHOW_ON_IDLE = false;    //옙 활성화 상태일때 보여줄것인지
    int LIVE_TIME = 1;    //옙 비활성화 상태일때 FCM가 메시지를 유효화하는 시간
    int RETRY = 2;    //메시지 전송실패시 재시도 횟수
 
    
    String simpleApiKey = "fcm 서버키 값 "; <--이 값은 주석 처리함  
    String gcmURL = "https://android.googleapis.com/fcm/send";    
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    
    String msg = request.getParameter("message");;//textarea 내용을 파라미터로 받음
    
    if(msg==null || msg.equals("")){
        msg="";
    }
    
    msg = new String(msg.getBytes("UTF-8"), "UTF-8");   //메시지 한글깨짐 처리
    
    try {
        Class.forName("com.mysql.jdbc.Driver");
        conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/sakila","root","1234");
        //db연결
        stmt = conn.createStatement();            
        String sql = "select token from token1";
        rs = stmt.executeQuery(sql);
        
        //모든 등록ID를 리스트로 묶음
        while(rs.next()){
            token.add(rs.getString("Token"));
        }
        conn.close();
        
        Sender sender = new Sender(simpleApiKey);//%
        Message message = new Message.Builder()    //%
        .collapseKey(MESSAGE_ID)
        .delayWhileIdle(SHOW_ON_IDLE)
        .timeToLive(LIVE_TIME)
        .addData("message",msg)
        .build();
        MulticastResult result1 = sender.send(message,token,RETRY);    //%
/*         if (result1 != null) {
            List<Result> resultList = result1.getResults();
            for (Result result : resultList) {
                System.out.println(result.getErrorCodeName());
            }
        } */
    }catch (Exception e) {
        e.printStackTrace();
    }
%>
폼은     <form action="push_notification.jsp" method="post">
        <textarea name="message" row="4" cols="50" placeholder="메시지를 입력하세요."></textarea><br>
        <input type="submit" name="submit" value="Send" id="submitButton">
    </form>
이렇게 해서 받고 있습니다.

1개의 답변

+1 추천
 
채택된 답변

http://blog.naver.com/PostView.nhn?blogId=scw0531&logNo=220844031273&redirect=Dlog&widgetTypeCall=true

JSP FCM구축

 

1. 웹 서버 측에서도 구글에 요청을 하고 데이터를 주고받기 위해서 서버용 FCM등록파일이 있어야 한다. 아래의 주소는 해당 파일을 다운로드 받을 수 있는 경로이다. 해당 jar파일을 다운로드 받아서 웹 부분에 라이브러리에 추가해주면 된다.

 

http://www.java2s.com/Code/Jar/g/Downloadgcmserverjar.htm

 

익명사용자 님이 2017년 1월 18일 답변
기객님이 2017년 1월 18일 채택됨
저도 저 블로그 보고 gcm.server 랑 json-simple 라이브러리 다 넣었는데 뜨는 겁니다. ㅠㅠㅠㅠ
이상하게 다시 실행하니 되네요 흠........
...