The answer to the first question is of course yes. Since Struts 2 Portlet is a JSR168 framework, it can be deployed to any portlet container supporting the JSR168 standard, including JBoss Portal.
To answer the second question, I had to browse through the JBoss Portal reference guide, and found that you have to write two custom deployment descriptors.
For the Struts 2 sample portlet application, I added the following:
portlet-instances.xml
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE deployments PUBLIC
"-//JBoss Portal//DTD Portlet Instances 2.6//EN"
"http://www.jboss.org/portal/dtd/portlet-instances_2_6.dtd">
<deployments>
<deployment>
<instance>
<instance-id>StrutsPortletInstance</instance-id>
<portlet-ref>StrutsPortlet</portlet-ref>
</instance>
</deployment>
</deployments>
struts2-portlet-object.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE deployments PUBLIC
"-//JBoss Portal//DTD Portal Object 2.6//EN"
"http://www.jboss.org/portal/dtd/portal-object_2_6.dtd">
<deployments>
<deployment>
<parent-ref>default.default</parent-ref>
<if-exists>overwrite</if-exists>
<window>
<window-name>StrutsPortletWindow</window-name>
<instance-ref>StrutsPortletInstance</instance-ref>
<region>center</region>
<height>1</height>
</window>
</deployment>
</deployments>
I added both files to the WEB-INF folder of the application.
With both files added, put the war file in the deploy folder of your server, and your portlet should appear on the default page of the portal.
Consult the documentation for a description of these files, and the relations between the names and ids in them.
I would rather not have to specify the instances, page and placement of the portlet in a descriptor in the portlet application itself, but that is how it was described in the documentation.
Update:
It appears that these descriptors are indeed optional. You can deploy a plain Struts 2 Portlet (or any JSR168 portlet for that matter) and do all the required steps in the portal administration.