⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 statelessmapimagebean.java

📁 在ArcGIS中应用EJB的实例
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package com.esri.arcgis.samples.ejb;

import javax.ejb.SessionBean;
import javax.ejb.EJBException;
import javax.ejb.SessionContext;
import com.esri.arcgis.samples.ejb.value.Envelope;
import com.esri.arcgis.samples.ejb.LocalTransaction;
import com.esri.arcgis.samples.ejb.XAResource;
import com.esri.arcgis.geometry.IEnvelope;
import com.esri.arcgis.geometry.IPoint;


public class StatelessMapImageBean implements javax.ejb.SessionBean {

    private javax.ejb.SessionContext m_context;
    private com.intrinsyc.jca.ConnectionFactory m_connectionFactory;
    private com.intrinsyc.jca.Connection m_connection;
    private com.intrinsyc.jca.JintConnectionRequestInfo m_connectionRequestInfo;
    private java.lang.Object m_serverConnectionObject;
    private com.esri.arcgis.server.ServerConnection m_serverConnection;
    private com.esri.arcgis.server.IServerContext m_serverContext;
    private com.esri.arcgis.carto.IMapServer m_mapServer;
    private com.esri.arcgis.carto.IMapServerInfo m_mapServerInfo;
    private com.esri.arcgis.carto.IMapDescription m_mapDescription;
    private com.esri.arcgis.carto.IGraphicElements m_graphicElements;
    private com.esri.arcgis.carto.IImageType m_imageType;
    private com.esri.arcgis.carto.IImageDisplay m_imageDisplay;
    private com.esri.arcgis.carto.IImageDescription m_imageDescription;
    private com.esri.arcgis.carto.IMapImage m_mapImage;
    private String m_mapDescriptionString;
    private String m_imageDescriptionString;
    private String m_arcServerHostName;
    private String m_arcServerHostDomain;
    private String m_arcServerHostUserName;
    private String m_arcServerHostPassword;
    private String m_mapServerName;

    public void ejbActivate(){
    }

    public void ejbPassivate(){
    }

    public void ejbRemove(){
        try{
             m_serverContext.removeAll();
             m_serverContext.releaseContext();
         }
         catch(Exception exception){
             System.out.println(exception.getMessage());
         }
    }

    public void ejbCreate(){

        }

    public void setSessionContext(SessionContext sessionContext){
    }

    public java.util.Hashtable getMap(String mapServerHost, String mapServerName, String mapName, int width, int height, double dpi, int imageFormat, int imageReturnType) throws Exception{
            try{
               initMap(mapServerHost, mapServerName, mapName, width, height, dpi, imageFormat, imageReturnType);

               java.util.Hashtable hTable = new java.util.Hashtable(3);

               m_mapImage = m_mapServer.exportMapImage(m_mapDescription, m_imageDescription);
               hTable.put("MAPURL", m_mapImage.getURL());

              m_mapDescriptionString = m_serverContext.saveObject(m_mapDescription);
              m_imageDescriptionString = m_serverContext.saveObject(m_imageDescription);

              hTable.put("MAPDESCRIPTION", m_mapDescriptionString);
              hTable.put("IMAGEDESCRIPTION", m_imageDescriptionString);

              com.esri.arcgis.geometry.IEnvelope currentExtent = m_mapDescription.getMapArea().getExtent();

              com.esri.arcgis.samples.ejb.value.Envelope envelope = new com.esri.arcgis.samples.ejb.value.Envelope();
                envelope.setMinX(currentExtent.getXMin());
                envelope.setMaxX(currentExtent.getXMax());
                envelope.setMinY(currentExtent.getYMin());
                envelope.setMaxY(currentExtent.getYMax());

              hTable.put("EXTENT", envelope);

              hTable.put("MAPUNITS", String.valueOf(m_mapServerInfo.getMapUnits()));
              return hTable;
            }
            catch(Exception exception){
                throw new Exception("getMap(String mapServerHost, String mapServerName, String mapName, int width, int height, double dpi, int imageFormat, int imageReturnType) failed: " + exception.getMessage());
            }
       }


       private void connectServer(String mapServerHost, String mapServerName,
                                        String mapDescription, String imageDescription) throws MapServerConnectionException{

             try{
                m_serverConnection.connect(mapServerHost);
                com.esri.arcgis.server.IServerObjectManager serverObjectManager = m_serverConnection.getServerObjectManager();

                System.out.println("Before ServerContext");
                m_serverContext = serverObjectManager.createServerContext(mapServerName, "MapServer");
                System.out.println("After: " + m_serverContext);

                if(mapDescription != null && imageDescription != null){
                     	m_mapDescription = new com.esri.arcgis.carto.IMapDescriptionProxy(m_serverContext.loadObject(mapDescription));
                     	m_imageDescription = new com.esri.arcgis.carto.IImageDescriptionProxy(m_serverContext.loadObject(imageDescription));
                }
                m_mapServer = new com.esri.arcgis.carto.IMapServerProxy(m_serverContext.getServerObject());

               }
           catch(Exception exception){
               throw new MapServerConnectionException(exception.getMessage());
           }
       }

       private void initMap(String mapServerHost, String mapServerName, String mapName, int width, int height, double dpi, int imageFormat, int imageReturnType) throws Exception{
            try{

                   initializeMapBean();

            	   if(this.m_arcServerHostName.length() > 0 && this.m_mapServerName.length() > 0){
            		connectServer(m_arcServerHostName, m_mapServerName, null, null);
            	   }
            	   else{
                    	connectServer(mapServerHost, mapServerName, null, null);
                    }

                   com.esri.arcgis.carto.IMapServerObjects mapServerObjects = new com.esri.arcgis.carto.IMapServerObjectsProxy(m_mapServer);

                    if(mapName == null){
                        m_mapServerInfo = new com.esri.arcgis.carto.IMapServerInfoProxy(m_mapServer.getServerInfo(m_mapServer.getDefaultMapName()));
                    }
                    else{
                        m_mapServerInfo = new com.esri.arcgis.carto.IMapServerInfoProxy(m_mapServer.getServerInfo(mapName));
                    }

                   m_mapDescription = new com.esri.arcgis.carto.IMapDescriptionProxy(m_mapServerInfo.getDefaultMapDescription());

                   m_graphicElements = new com.esri.arcgis.carto.IGraphicElementsProxy(m_serverContext.createObject("esricarto.GraphicElements"));

			 if(m_graphicElements.getCount() > 0){
                       m_graphicElements.removeAll();
                   }

                   m_imageType = new com.esri.arcgis.carto.IImageTypeProxy(m_serverContext.createObject("esricarto.ImageType"));
                   m_imageType.setFormat(imageFormat);
                   m_imageType.setReturnType(imageReturnType);

                   m_imageDisplay = new com.esri.arcgis.carto.IImageDisplayProxy(m_serverContext.createObject("esricarto.ImageDisplay"));
                   m_imageDisplay.setHeight(height);
                   m_imageDisplay.setWidth(width);
                   m_imageDisplay.setDeviceResolution(dpi);

                   m_imageDescription = new com.esri.arcgis.carto.IImageDescriptionProxy(m_serverContext.createObject("esricarto.ImageDescription"));
                   m_imageDescription.setType(m_imageType);
                   m_imageDescription.setDisplay(m_imageDisplay);

                   m_mapDescriptionString = m_serverContext.saveObject(m_mapDescription);

                   m_imageDescriptionString = m_serverContext.saveObject(m_imageDescription);


                    releaseResources();

               }
            catch(Exception exception){
                throw new Exception("Error in initMap: " + exception.getMessage());
            }
       }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -