8

Đây là web.xmlkết hợp blob servlet với thiết bị đầu cuối api

<?xml version="1.0" encoding="utf-8" standalone="no"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 

    <servlet> 
    <servlet-name>Upload</servlet-name> 
    <servlet-class>Upload</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>Upload</servlet-name> 
    <url-pattern>/upload</url-pattern> 
    </servlet-mapping> 

    <servlet> 
     <servlet-name>SystemServiceServlet</servlet-name> 
     <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class> 
     <init-param> 
      <param-name>services</param-name> 
      <param-value>com.company.game.GameApi</param-value> 
     </init-param> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>SystemServiceServlet</servlet-name> 
     <url-pattern>/_ah/spi/*</url-pattern> 
    </servlet-mapping> 

</web-app> 

của tôi, tôi có một api Google Cloud Endpoint, GameApi, vốn đã được làm việc tốt ngoại trừ việc tải của các đốm màu được dùng quá lâu. Vì vậy, tôi quyết định sử dụng Upload servlet on the google website to upload my blobs from user. Về cơ bản tôi đã thêm mã xml cho tệp blob vào mã xml hiện tại của mình cho api điểm cuối, dẫn đến xml được hiển thị ở trên. Nhưng sau đó Upload servlet không bao giờ được gọi. Tôi đang thử nghiệm trên máy chủ cục bộ và tôi có thể thấy trong bảng _BlobUploadSession_ rằng giao diện người dùng (ví dụ: ứng dụng android) đã gửi thành công hình ảnh tới blobstore với url gọi lại chính xác. Tôi biết rằng servlet không được gọi vì tôi có một tuyên bố println ngay tại lối vào.

Tôi có cần thay đổi web.xml của mình không? Tôi có được phép kết hợp điểm cuối với servlet như tôi đang làm trong số web.xml của mình không?

+0

@DanHolevoet bạn hoặc nhóm của bạn có bất kỳ đầu vào nào về cách làm việc này không? Cách tiếp cận ưa thích của tôi là chỉ sử dụng các điểm cuối (http://stackoverflow.com/questions/16257895/convert-servlet-schema-to-app-engine-endpoint-schema), nhưng vì tôi không biết làm thế nào để làm điều đó , Tôi đã tạo một lớp servlet như được mô tả. Nhưng servlet của tôi không bao giờ được gọi. – learner

+0

@ bossylobster tôi có thể xin trợ giúp với cái này không? – learner

+0

@Tom bất kỳ ý tưởng nào? – learner

Trả lời

1

Check-out https://cloud.google.com/developers/articles/how-to-build-mobile-app-with-app-engine-backend-tutorial

<servlet> 
    <display-name>Remote API Servlet</display-name> 
    <servlet-name>RemoteApiServlet</servlet-name> 
    <servlet-class>com.google.apphosting.utils.remoteapi.RemoteApiServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>RemoteApiServlet</servlet-name> 
    <url-pattern>/remote_api</url-pattern> 
</servlet-mapping> 
0

Mặc dù Android Studio điểm cuối đám mây của tôi gradle đồng bộ hóa thành công, khi tải lên để GAE, định dạng sau (mà bạn đang sử dụng) dẫn đến sai sót và tải lên không thành công:

<servlet> 
    <servlet-name>Upload</servlet-name> 
    <servlet-class>Upload</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>Upload</servlet-name> 
    <url-pattern>/upload</url-pattern> 
    </servlet-mapping> 

Điều tôi cần làm là liệt kê đường dẫn đầy đủ của servlet. Trong trường hợp của bạn:

<servlet> 
    <servlet-name>Upload</servlet-name> 
    <servlet-class>com.company.game.Upload</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>Upload</servlet-name> 
    <url-pattern>/upload</url-pattern> 
    </servlet-mapping> 

Hy vọng điều này sẽ giúp ai đó.

Các vấn đề liên quan