Consider this example,

https://geoext.github.io/geoext2/examples/grid/feature-grid.html

It uses 

    protocol: new OpenLayers.Protocol.HTTP({
                    url: "../data/summits.json",
                    format: new OpenLayers.Format.GeoJSON()
                })

for the locations and elevations of some mountains. There are three properties: name (string), height (long), and geometry (point).

What I want to do is put the json file onto GeoServer and call it that way. I imported the file into GeoServer, and I know it works because I can see it with a WFS url. But I'm trying to load it with the code

    var vecLayer = new OpenLayers.Layer.Vector("vector", {
        styleMap: new OpenLayers.StyleMap({
            'default': style
        }),
        strategies: [new OpenLayers.Strategy.Fixed() ],
        protocol: new OpenLayers.Protocol.WFS({
            readFormat: new OpenLayers.Format.GeoJSON(),
            url: "http://fakeurl.com/geoserver/wfs",
            srsName: "EPSG:4326",
            featureNS: "http://fakeurl.com/geoext/geonodeuri",
            featureType: "summits",
            outputFormat: "json",
            version: "1.1.0"
       })
    });

I know that `url`, `featureNS`, and `featureType` are all correct because I can successfully add other shapefile vectors in the same workspace with them. I'm quite stumped as far as getting the WFS protocol to work, however. Do I need to set `geometryName` or something? GeoServer lists three properties, and I need all three of them. Ideally I would get the exact same result as the simple `OpenLayers.Protocol.HTTP` protocol.

Thanks.

Update:

If I put the JSON file in a web directory and do an HTTP protocol to it, it works. Which is to say,

    protocol: new OpenLayers.Protocol.HTTP({
                    url: "http://fakeurl/data/summits.json",
                    format: new OpenLayers.Format.GeoJSON()
                })
displays just fine. However, when I link to a WFS Getfeature request, like

    protocol: new OpenLayers.Protocol.HTTP({
                    url: "http://fakeurl/geoserver/wfs?service=WFS&version=1.0.0&request=GetFeature&typeName=geonode:summits&maxFeatures=50",
                    format: new OpenLayers.Format.GeoJSON()
                })

I get no result. But the url provided displays the JSON file in a browser. I don't understand. I just want some way of getting those contents via GeoServer, but it continues to elude me.

Update: turns out there's something wrong with the layer itself. I can view the JSON data through a link but only if I'm logged into Geoserver. If I'm not logged in, then I get a "Could not find layer" message. So I guess that's my issue: why data imported in GeoServer it not made public (my JSON), but a layer through Geonode is.